全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
25240 5
2015-11-24

1、R语言语法中对大小写很敏感,大小写代表不同含义。

2、R语言中变量名称不能以数字开头,比如100a<-2是错误的。

3、R工作空间(运行时的内存)不会存储求值和打印。比如z<-0,z+1=1,print(z+1),工作空间会保存z<-0,但是不会保存z+1=1,print(z+1)

4、输入语法时必须使用英文键盘,中文键盘会出错。

5、R语言中字符型值要加引号,如“red”。

> a<-ttt

错误: 找不到对象'ttt'

> a<-"ttt"

> a

[1] "ttt"

>

6、如果数据中有NA存在,表示这个位置数据遗失,不能进行值的类型描述。也不能用函数来计算,需要计算是可以加上na.rm=T表示忽略NA,但是这个位置并没有去除,使用length可以看到。

> x<-c(10,20,30,NA)

> x

[1] 10 20 30 NA

> mean(x)

[1] NA

> mean(x,na.rm=T)

[1] 20

> length(x)

[1] 4

>  x<-c(10,20,30,NA)

> x

[1] 10 20 30 NA

> na.fail(x)  #判断至少存在一个NA则返回错误

Error in na.fail.default(x) : 对象里有遺漏值

> na.omit(x)  #返回删除NA后的向量

[1] 10 20 30

attr(,"na.action")

[1] 4

attr(,"class")

[1] "omit"

> is.na(x)  #判断向量或矩阵或是数据框中的NA

[1] FALSE FALSE FALSE  TRUE

> x[!is.na(x)]#!与is.na()配合使用除去NA

[1] 10 20 30

>

7、如果数据中有NULL存在,表示这个变量可以被忽略,而且这个变量不会占据任何空间。

>  x<-c(10,20,30,NULL)

> mean(x)

[1] 20

> length(x)

[1] 3

>

四、R的集中对象类型:

向量:vector:数值型,复数型,字符型,逻辑型。不允许其他类型。

数组:array数值型,复数型,字符型,逻辑型。不允许其他类型。

矩阵:matrix数值型,复数型,字符型,逻辑型。不允许其他类型。

数据框:data.frame相同列数据类型必须相同,不同列可以不同。

列表:list每个元素的数据类型都可以不同。

> a<-"100"

> a

[1] "100"

> mode(a)  #查看类型

[1] "character"

> as.numeric(a) #as.数据类型()可以实现不同类型数据的转换

[1] 100

> mode(a)

[1] "character"

> mode(as.numeric(a))

[1] "numeric"

> mode(as.complex(a))

[1] "complex"

> a<-10

> as.logical(a)

[1] TRUE

> b<-1

> as.logical(b)

[1] TRUE

> c<--1

> as.logical(c)[1] TRUE

> d<-0

> as.logical(d)#对数值型进行逻辑转换时,只有当数值为零时,转换为逻辑变量是是F

[1] FALSE

>

五、向量:

注意:

1、当向量里有数字和字符两种时,R认为这个向量是字符型向量。

> a<-c(1,2,"nihao")

> mode(a)

[1] "character"

2、当向量中有数字和逻辑TF时,R认为这个向量是数值型向量。

> a<-c(1,2,F)

> mode(a)

[1] "numeric"

3、当向量中有逻辑TF时以及字符时,R认为这个向量是字符型向量。

> a<-c(F,"nihao")

> mode(a)

[1] "character"

4、R语言中下标的起始位1而不是0.

> a<-1:10

> a[1]

[1] 1

> a[0]

integer(0)

5、向量中删除某一位置的数值

> a<-c(4,3,2,1)

> a<-a[-3]

> a

[1] 4 3 1

6、数值排序

> a<-c(2,4,43,2,42,56)

> sort(a) #从小到大排序

[1]  2  2  4 42 43 56

> rev(a) #根据下标大小,从大到小排序

[1] 56 42  2 43  4  2

> rev(sort(a)) #配合使用,从大到小排序,注意和上面的区别

[1] 56 43 42  4  2  2

7、比较向量中的大小:

> a<-c(1,2,9,4)

> b<-c(4,2,5,6)

> c<-c(6,6.8,9,9)

> pmin(a)

[1] 1 2 9 4

> pmin(a,b,c) #比较a,b,c向量中所有数值的大小并将最小的几个取出组成一个新向量

[1] 1 2 5 4

> pmax(a,b,c)#比较a,b,c向量中所有数值的大小并将最大的几个取出组成一个新向量,向量长度一般要求三个向量或是多个向量相同,如果不同,则R会自动处理,一般形成元素个数最多的。

[1] 6.0 6.8 9.0 9.0

8、向量间交集、并集合补集

> intersect(a,b)#a,b交集

[1] 2 4

> union(a,b) #a,b并集

[1] 1 2 9 4 5 6

> setdiff(a,b)#a,b补集,属于a而不属于b

[1] 1 9

9、矩阵合并

> data1<-c(1:6)

> a2<-matrix(data1,nrow=3,ncol=2)

> a2

     [,1] [,2]

[1,]    1    4

[2,]    2    5

[3,]    3    6

> a3<-rbind(a2,c(7,8))  #扩展矩阵的行,这个函数同样可以用在数据框的合并中

> a3

     [,1] [,2]

[1,]    1    4

[2,]    2    5

[3,]    3    6

[4,]    7    8

> a4<-cbind(a2,c(8,9,10)) #扩展矩阵的列,这个函数同样可以用在数据框的合并中

> a4

     [,1] [,2] [,3]

[1,]    1    4    8

[2,]    2    5    9

[3,]    3    6   10

> a5<-cbind(a2,c(8,9)) #扩张行或列时,要求向量长度必须相等

Warning message:

In cbind(a2, c(8, 9)) :

  number of rows of result is not a multiple of vector length (arg 2)

>

10、随机抽样:

> sample(c(1:20),size=12,replace=F)#不重复抽样,样本大小为12

[1] 20  2 14 17 18  5 10 13 12  4  3 19

> sample(c(1:20),size=12,replace=T)#可重复抽样

[1]  7 11 19 11  6  1  9 18  7  3  8 13

11、自定义函数:

> func<-function(x1,x2=0){  #注意:使用function函数内部定义的数据对象(包括参数形式定义的数据对象)均为局部变量,因此不会改变函数外部同名对象的数值。

+ demo<-x1+2*x2

+ if(x1+x2>=100){300*demo-90}

+ else if(x1+x2>=-90)

+ {9-demo}

+ else {NA}}

> func

function(x1,x2=0){

demo<-x1+2*x2

if(x1+x2>=100){300*demo-90}

else if(x1+x2>=-90)

{9-demo}

else {NA}}

> func(x1=40,x2=0)

[1] -31


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-10-26 14:27:11
学习了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-3-5 08:52:23
很有用,感谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-6-26 09:14:40
楼主威武,把容易出错的地方都总结的很到位,很有参考价值!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-6-26 22:38:24
very nice and thanks
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-3-21 21:30:35
楼主有心了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群