开发者学堂课程【R 语言编程基础: R 的常用命令】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/564/detail/7717
R 的常用命令
1、通过输入 ls()命令列举当前内存中的对象,现在内存中没有任何的对象,比如创建对象:
data
<-
c(1
,
2,
4,5)
Strings
<-’’I
like
R’’
这样就创建了两个数据对象,现在再输入 ls()就可以看到在 R 内存中的两个对象,
"data" " strings"
如果不需要其中一个对象可以通过删除它释放 R 的内存空间,删除命令是 rm(),比如把 data 删除掉,直接输入rm(data)进行删除,再输入 ls()查询当前 R 内存中有那些对象,data 被删除,只剩 strings 一个对象,
" strings"
2、注意在创建 R 对象时,R 当中的名称是区分大小写的,比如小写的 a 赋值为1,大写的 A 赋值为2,这两个都是不同的变量,再输入 ls()查询,有三个不同的对象在 R 的内存中。
a<-1
A<-2
Ls()
" a " "A" "strings"
再创建一个向量,
V <- c(4, 7,23, 56,32)
3、创建向量后,有很多针对向量进行的操作和处理的函数,首先打开第一个 length,求向量 v 的长度,在创建向量v时,给它赋了五个数值,也就是向量 v 的长度是5。
Length
(
v
)
5
4、针对向量 v 还可以用 mode,mode(v),主要是进行查看数据 v 的类型,刚才创建时赋的是数字,因此它应该显示的是数字的数据类型,"numeric",前面也介绍向量了数据类型,它存储的数据都是同一种模式,数值型或字符串型,再创建一个向量用 c 进行表示,加字符串 r,c<-c(1,2,3,’’r’’),当创建这么一个向量时,r 会把里面的数字类型强行转化成字符串类型,也就是1,2,3在 r 中不再被看作成是数字,而是看作与 r 相同字符串的类型,
Mode
(
c
)
"character"
C
"1" "2" "3" "
r
"
1,2,3强制被转化成字符型,在创建向量之后,如果对向量中某一个元素进行更改时,使用方括号的形式,对其进行查找,进行其他字段的变更,比如更改 c 向量中的第二个元素,把这个元素赋值成另外一个字符串,test,再查看c,第二个元素就变成 test。
c[2]<-‘’test‘’
C
‘’
1
‘’
‘’
test‘’
‘’
3
‘’
‘’
r''
5、最强大的功能展示之一就是函数的向量化,也就是当函数进行处理时,这个函数可以直接对向量中每一个元素进行操作,比如建立向量 x,给它进行赋值。
X<-c(4,8,9, 15,24)
如果对 x 中所有元素求平方根,
Y <-sqrt (x)
2.000000
2.828427
3. 000000
3.872983
4.898979
可以得到所有元素平方根的求值结果,也可以对向量进行基本的加减乘除的运算,比如 x 和 y 的求和,
Z <-X+y
6.00000 10.82843 12. 00000 18.87298 28.89898
这个值就是将 x 中的各个元素和 y 中各个对应位置的元素进行相加,得到各个位置相加的元素之和。
6、在 R 中如果遇到两个向量长度不一样时,向量的加减运算应该如何进行操作?这时 R 会使用一个循环的规则,也就是它会使较短的向量不断重复其中一个。
7、举例,给 x 和 y 赋值为简单的数字,
X<-c(1,1,1, 1, 1,1)
У<-c(2,2,2)
如果两个向量长度不一样,会重复比较短的向量元素,也就是当用z执行获取 x 和 y 相加的结果,也就是它会把 y 进行循环赋值,会形成一个有6个数字的向量,就是2,2,2后面再3个2,获得的结果就是6个3,这就是两个不同长度的向量进行的运算的情况。
z<-x+y
Z
3 3 3 3 3
8、很多时候创建向量时是逐个数字去输入,有很多情况需要生成不同序列的方法,比如创建1-1000所有指数的向量,可以输入x<-1:1000,这样就生成了一个向量,这个向量中有1000个数字,分别是1,2,3到1000,length(x),1000,x。
以下就是生成的序列:
也可以使用 seq 生成实数序列,用 x 存储这个序列,x<-seq,这个函数的格式,比如它的起点从1序列一直到10,希望它的增量为2,也就是生成的序列从1开始,每一次加2获得向量的序列结果,
x<-seq(1,10,2)
X
1 3 5 7 9
9、有关 seq 得到序列还有很多方式,比如使用 from to 等等,其他的序列方式可以参考帮助文件。它生成序列 R 中还有一个 rep,它是采用一种循环或重复的方式,比如还是用 x 接收结果,
x<-rep(5,10)
这个函数的意思是希望生成一个向量,向量的元素是5,而且让它循环10次进行生成,循环生成10个5的向量。
x
5 5 5 5 5 5 5 5 5 5
10、也可以采用 rep(1:3,3),1到3的序列,3次循环这种形式得到结果。
rep(1:3,3)
1 2 3 1 2 3 1 2 3
11、R 中还有很多可以根据不同的概率密度函数生成随机序列的函数,比如 rnorm,这个函数生成10个服从均值为0,标准差为1正态分布的随机向量,
Rnorm(10)
[1] 1.176555391 0.117578673 -0.001891701 -0.621917268 -0.301895078 -0.201588205 2.903450724 0.511170206
[9] 0.460424768 -1.275409861
生成随机向量时也可以对其进行指定,因为它默认是生成平均值为0,标准差为1,比如生成6个正态分布的随机数,希望它的均值是6,标准差是2,这样就生成服从正态分布的随机的数值。
rnorm(6, mean=6,sd=2)
2.857149 5.234534 6.819100 5.283175 2.946540 7. 915748
12、R 针对不同的数据类型操作很灵活,比如创建一个向量,向量是0,-3,4,-1,45,98,-12,创建这么一个 x向量,
x<-c( 0,-3,4,-1,45,98,-12)
把 x 中大于0的向量取出来时,可以使用中括号以及元素的位置对其进行定位,但是 R 中有非常灵活的一种方式,使用中括号,希望 x 大于0,它会把 x 向量中大于0的4,45以及98提取出来。
x>[x>0]
4,45,98
13、比如进行一些更复杂的选择,x[x<=-2|x>5],得到-3 45 98 -12,这个列子介绍了或运算符,相对于 R 中也有余,余使用的字符是&,用这个字符自己去对 R 中的向量操作实际体验,在 R 中的具体应用过程中会经常碰到这样的情况,比如这个向量中有7个元素,可能只需要取其中6个元素,相当于把其中一个元素排除掉,比如采取一种循环的方式,先取第一个到第四个元素,再取第六第七个元素,实际上 R 中有一个很简便的方式,不想取 x 中第五个值,也就是45,可以用x[-5],这样就把第五个值排除掉,只取其他的6位元素。
x[-5]
0 -3 4 -1 98 -12
没有第五个值,第五个元素是45。
14、比如不想取前面三个元素,排除了0,-3和4
x[-(1:3) ]
-1 45 98 -12