R 数据分析
目录:
- windows命令行中执行R
- dataframe
- 常用函数、变量
1、windows命令行中执行R
前提:已经把R的命令目录加入了系统路径中。
在windows中,命令行执行R可以用以下两种方式:
(1)RCMD BATCH xxx.r
- 这种方式也可以写成”r cmd BATCH“、”rcmd BATCH“、”R CMD BATCH“,这几个命令都是一样的,随便你用哪个
- 这种方式的输出结果不是直接显示在命令行中,而是会在r文件相同路径下,自动创建一个xxx.r.Rout文本文件,输出的内容在这个文件里
- 但是这种方式用commandArgs()函数得不到传递的参数,而是生成了一个名为第一个参数的文本文件代替上面的xxx.r.Rout文件
举个例子,有以下test.r程序:
args = commandArgs(trailingOnly=TRUE)
print(args[2])
print('do a test')
比如在命令行输入”RCMD BATCH test.r 4 5“,就会生成一个名为4的文本文件,文件内容如下,程序打印的第二个参数是NA,实际上应该是5;

(2)Rscript xxx.r
- 这种方式的输出结果直接显示在命令行中,不会生成其他输出文件
- 这种方式可以用commandArgs()函数得到传递的参数
但是得到参数的索引由函数的trailingOnly参数决定,当trailingOnly=TRUE时,参数索引从1开始;
当trailingOnly=TRUE时,参数索引从6开始,因为:
args[1]= "C:\\Program Files\\R\\R-3.4.4\\bin\\x64\\Rterm.exe"
args[2]= "--slave"
args[3]= "--no-restore"
args[4]="--file=test.r"
args[5]="--args"
args[6]==""
args[7]=="do a test"
2、dataframe
创建空数据框
# 创建0行0列的数据框
df_empty = data.frame()
# 创建和df有同样多的列,0行的数据框
> df_r = df[, FALSE]
data frame with 0 columns and 4 rows
# 创建一个行数为0,列数、列名和df相同的数据框
> df_c = df[FALSE, ]
[1] one two three
<0 行> (或0-长度的row.names)
创建非空数据框
# 指定列名
> df = data.frame(one=c(1,2,3,4),two=c(4,5,6,0),three=c(32,21,34,32))
one two three
1 1 4 32
2 2 5 21
3 3 6 34
4 4 0 32
# 不指定列名
> df = data.frame(c(1,2,3,4),c(4,5,6,0),c(32,21,34,32))
c.1..2..3..4. c.4..5..6..0. c.32..21..34..32.
1 1 4 32
2 2 5 21
3 3 6 34
4 4 0 32
# 自动匹配最长的行数
> data.frame(one_t=c(5,2),two=c(12),three=c(9))
one_t two three
1 5 12 9
2 2 12 9
# 指定行名和列名
> data.frame(one=c(1,2,3,4),two=c(4,5,6,0),three=c(32,21,34,32),row.names = c('a','b','c','d'))
one two three
a 1 4 32
b 2 5 21
c 3 6 34
d 4 0 32
访问元素
# 默认访问元素是对列而言的,可以通过加逗号来限定 ## 用索引访问
# 访问列
> df[1:2]
one two
1 1 4
2 2 5
3 3 6
4 4 0
> df[,1:2]
one two
1 1 4
2 2 5
3 3 6
4 4 0 # 访问行
> df[c(1,3),]
one two three
1 1 4 32
3 3 6 34
> df[1:2,]
one two three
1 1 4 32
2 2 5 21
# 取反
> df[-c(1,3),]
one two three
2 2 5 21
4 4 0 32 ## 用列名和行名访问
# 列名
> df['one']
one
1 1
2 2
3 3
4 4
> df[,'one']
[1] 1 2 3 4
> df['one',]
one two three
NA NA NA NA # 行名
> df['',]
one two three
1 1 4 32
> df['']
Error in `[.data.frame`(df, "") : undefined columns selected
数据筛选
# 条件语句选择列
> df[which(df$one>2),]
one two three
3 3 6 34
4 4 0 32 # 取反
> df[-which(df$one>2),]
one two three
1 1 4 32
2 2 5 21 # 支持逻辑符,&和,|或
> df[which(df$one>1 & df$two>0),]
one two three
2 2 5 21
3 3 6 34
判断是否为数据框
> is.data.frame(df)
[1] TRUE
修改行名和列名
> names(df)
[1] "one" "two" "three"
> names(df)[1]='one_m'
> names(df)
[1] "one_m" "two" "three" > colnames(df)
[1] "one" "two" "three"
> colnames(df)[1]='one_t'
> colnames(df)
[1] "one_t" "two" "three" > rownames(df)
[1] "" "" "" ""
> rownames(df)[1]=''
> rownames(df)
[1] "" "" "" ""
cbind 列连接
# 当df_n的行数和df的行数一样时
> data.frame(one=c(9,8,7,6))
one
1 9
2 8
3 7
4 6
> cbind(df,df3)
one two three one
1 1 4 32 9
2 2 5 21 8
3 3 6 34 7
4 4 0 32 6 # 当df_n的行数小于df,但是df的行数是df_n的整数倍时
> df2 = data.frame(one=c(5),two=c(12),three=c(9))
one two three
1 5 12 9
> cbind(df,df2)
one two three one two three
1 1 4 32 5 12 9
2 2 5 21 5 12 9
3 3 6 34 5 12 9
4 4 0 32 5 12 9 # 甚至这样的时候
> cbind(df,data.frame(one=c(5,2),two=c(12),three=c(9)))
one two three one two three
1 1 4 32 5 12 9
2 2 5 21 2 12 9
3 3 6 34 5 12 9
4 4 0 32 2 12 9
当被df_n的行数大于df时,会失败
> df4=data.frame(one=c(9,8,7,6,12))
> cbind(df,df4)
Error in data.frame(..., check.names = FALSE) :
参数值意味着不同的行数: 4, 5
虽然df_n的行数小于df,但df不是df_n行数的整数倍时,也会失败
> cbind(df,data.frame(one=c(5,2,3),two=c(12),three=c(9)))
Error in data.frame(..., check.names = FALSE) :
参数值意味着不同的行数: 4, 3
rbind 行连接
> rbind(df, data.frame(one_t=c(5),two=c(12),three=c(9)))
one_t two three
9 1 4 32
2 2 5 21
3 3 6 34
4 4 0 32
1 5 12 9
当数据框的列名不一致、列数目不一致时,都会失败
> rbind(df, data.frame(one=c(5,2,1,2),two=c(12,4,6,8),three=c(9,4,2,1)))
Error in match.names(clabs, names(xi)) : 名字同原来已有的名字不相对 > rbind(df, data.frame(one_t=c(5),two=c(12),three=c(9),four=c(4)))
Error in rbind(deparse.level, ...) : 变量的列数不对
其他
#数据框的长度是列的数目
> length(df)
[1] 3 # 列数
> ncol(df)
[1] 3 # 行数
> nrow(df)
[1] 4
3、基本统计函数
> sum(c(1,2,3))
[1] 6
> mean(c(1,2,3))
[1] 2
> var(c(1,2,3))
[1] 1
> sort(c(2,1,3))
[1] 1 2 3
3、常用函数、变量
# 查看数据结构和类型
> mode(df)
[1] "list" > class(df)
[1] "data.frame"> str(df)
'data.frame': 4 obs. of 3 variables:
$ one_t: num 1 2 3 4
$ two : num 4 5 6 0
$ three: num 32 21 34 32
> typeof(12)
[1] "double"
# 大/小写字母
> LETTERS[1:3]
[1] "A" "B" "C"
> letters[1:3]
[1] "a" "b" "c"
# 可放回抽样
> sample(c(1,2,3,4), 10, replace = TRUE)
[1] 2 3 1 2 3 3 4 3 3 4
# 判断是否为空, 返回一个同类型(数组)的布尔值
> is.na(c(,,,NaN))
[] FALSE FALSE FALSE TRUE
# generating regular suquences
> 1:5
[1] 1 2 3 4 5
> 2*1:5
[1] 2 4 6 8 10
> seq(1,5)
[1] 1 2 3 4 5
# 设定序列间隔
> seq(1,5,0.5)
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
# 固定序列长度
> seq(1,5,length.out = 4)
[1] 1.000000 2.333333 3.666667 5.000000
# 重复整个序列
> rep(c(1,2,3), times=5)
[1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
# 重复序列单个元素
> rep(c(1,2,3), each=5)
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
R 数据分析的更多相关文章
- R数据分析:跟随top期刊手把手教你做一个临床预测模型
临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...
- R数据分析:潜类别轨迹模型LCTM的做法,实例解析
最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...
- R数据分析:二分类因变量的混合效应,多水平logistics模型介绍
今天给大家写广义混合效应模型Generalised Linear Random Intercept Model的第一部分 ,混合效应logistics回归模型,这个和线性混合效应模型一样也有好几个叫法 ...
- R数据分析:如何简洁高效地展示统计结果
之前给大家写过一篇数据清洗的文章,解决的问题是你拿到原始数据后如何快速地对数据进行处理,处理到你基本上可以拿来分析的地步,其中介绍了如何选变量如何筛选个案,变量重新编码,如何去重,如何替换缺失值,如何 ...
- R数据分析:临床预测模型中校准曲线和DCA曲线的意义与做法
之前给大家写过一个临床预测模型:R数据分析:跟随top期刊手把手教你做一个临床预测模型,里面其实都是比较基础的模型判别能力discrimination的一些指标,那么今天就再进一步,给大家分享一些和临 ...
- 精心整理(含图版)|你要的全拿走!(R数据分析,可视化,生信实战)
本文首发于“生信补给站”公众号,https://mp.weixin.qq.com/s/ZEjaxDifNATeV8fO4krOIQ更多关于R语言,ggplot2绘图,生信分析的内容,敬请关注小号. 为 ...
- Python 和 R 数据分析/挖掘工具互查
如果大家已经熟悉python和R的模块/包载入方式,那下面的表查找起来相对方便.python在下表中以模块.的方式引用,部分模块并非原生模块,请使用 pip install * 安装:同理,为了方便索 ...
- 给大厨写的R数据分析代码
###************************************** 新老客户统计 ***************************************### dachu &l ...
- 基于R数据分析之常用Package讲解系列--1. data.table
利用data.table包变形数据 一. 基础概念 data.table 这种数据结构相较于R中本源的data.frame 在数据处理上有运算速度更快,内存运用更高效,可认为它是data.frame ...
- R数据分析(一)
R语言特点: 主要用于统计分析.图表显示. 属于解释型语言.支持模块化编程. 应用:数据科学.统计计算.机器学习 学习方法: 做笔记,记重点或者心得 手动实践,加深理解 坚持练习,利用身边数据 ...
随机推荐
- SQLMap使用总结
支持模式:布尔/时间/报错/联合查询/堆查询 支持数据库:MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM ...
- [BZOJ 4771]七彩树(可持久化线段树+树上差分)
[BZOJ 4771]七彩树(可持久化线段树+树上差分) 题面 给定一棵n个点的有根树,编号依次为1到n,其中1号点是根节点.每个节点都被染上了某一种颜色,其中第i个节点的颜色为c[i].如果c[i] ...
- DevExpress Winform使用单例运行程序方法和非DevExpress使用Mutex实现程序单实例运行且运行则激活窗体的方法
原文:DevExpress Winform使用单例运行程序方法和非DevExpress使用Mutex实现程序单实例运行且运行则激活窗体的方法 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA ...
- ubuntu安装supervisor以及使用supervisor启动.net core进程
1.下载.net core项目ubuntu系统运行容器dotnet 1.版本:dotnet-sdk-2.1.3-linux-x64.tar.gz 2.将下载好的包上传到ubuntu ...
- JavaScript面向对象编程(2)-- 类的定义
最近这一段时间事情太多了,没有时间再继续写,幸好这两天有点小闲,先小写一下JavaScript中面向对象一中推荐的方法.本文承接上一篇JavaScript面向对象编程(1) -- 基础. 上篇说过,J ...
- 2018-8-10-win10-UWP-发邮件
title author date CreateTime categories win10 UWP 发邮件 lindexi 2018-08-10 19:17:19 +0800 2018-2-13 17 ...
- 135-基于TMS320C6678、FPGA XC5VSX95T的2路Full模式Camera Link输入双目视觉处理平台
基于TMS320C6678.FPGA XC5VSX95T的2路Full模式Camera Link输入双目视觉处理平台 一.板卡概述 本板卡由我公司自主研发,基于CPCI架构,符合CPCI2.0标准,采 ...
- 2.VUE前端框架学习记录二
VUE前端框架学习记录二:Vue核心基础2(完结)文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baid ...
- java Scanner输入数字、字符串
package java05; import java.util.Scanner;//1.导包 /* Scanner类的功能,可以实现键盘输入数据,到程序当中 引用类型的一班使用步骤: 1.导包 2. ...
- ansible笔记(一)--架构图以及工作原理
一.ansible架构图 上图为ansible的基本架构,从上图可以了解到其由以下部分组成: 核心:ansible 核心模块(Core Modules):这些都是ansible自带的模块 扩展模块(C ...