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