r语言集合补集_R语言初学者需要知道的一些常识

本文介绍了R语言的一些基本概念,包括大小写敏感性、变量命名规则、数据类型的处理,特别是针对NA和NULL的处理。还讨论了向量、矩阵、数据框和列表等对象类型,以及如何进行数据转换、排序、比较、合并和随机抽样。此外,文章还讲解了如何定义自定义函数,并展示了如何处理条件逻辑。
摘要由CSDN通过智能技术生成

http://bbs.pinggu.org/thread-4002835-1-1.html

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

2、R语言中变量名称不能以数字开头,比如100a

3、R工作空间(运行时的内存)不会存储求值和打印。比如z

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

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

> a

错误:找不到对象'ttt'

>

a

> a

[1] "ttt"

>

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

>

x

> x

[1] 10 20 30 NA

> mean(x)

[1] NA

>

mean(x,na.rm=T)

[1] 20

> length(x)

[1] 4

> x

> 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

> mean(x)

[1] 20

> length(x)

[1] 3

>

四、R的集中对象类型:

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

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

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

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

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

>

a

> 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

>

as.logical(a)

[1] TRUE

> b

>

as.logical(b)

[1] TRUE

> c

>

as.logical(c)[1] TRUE

> d

>

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

[1] FALSE

>

五、向量:

注意:

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

>

a

> mode(a)

[1] "character"

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

>

a

> mode(a)

[1] "numeric"

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

>

a

> mode(a)

[1] "character"

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

> a

> a[1]

[1] 1

> a[0]

integer(0)

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

>

a

>

a

> a

[1] 4 3 1

6、数值排序

>

a

> 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

>

b

>

c

> 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

>

a2

> a2

[,1] [,2]

[1,] 1 4

[2,] 2 5

[3,] 3 6

>

a3

> a3

[,1] [,2]

[1,] 1 4

[2,] 2 5

[3,] 3 6

[4,] 7 8

>

a4

> a4

[,1] [,2]

[,3]

[1,] 1 4 8

[2,] 2 5 9

[3,] 3 6 10

>

a5

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

+

demo

+

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

+ else

if(x1+x2>=-90)

+ {9-demo}

+ else {NA}}

> func

function(x1,x2=0){

demo

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

else

if(x1+x2>=-90)

{9-demo}

else {NA}}

>

func(x1=40,x2=0)

[1] -31

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值