1.2.7 数据子集
可以在方括号内放入元素的位置来获取向量中的某个元素,正数x表示显示下标为x的元素,负数x表示不显示下标为x的元素。
> x<-c(-1,0,1,2,3)
> x[2]
[1] 0
> x[-2]
[1] -1 1 2 3
方括号中的命令是逻辑条件
> x<-c(-1,0,1,2,3)
> x[x>0]
[1] 1 2 3
通过函数names()来给向量中的元素命名
> x<-c(-1,0,1,2,3)
> names(x)<-c("1st","2nd","3rd","4th","5th")
> x
1st 2nd 3rd 4th 5th
-1 0 1 2 3
当索引为空时,表示所有元素都被选定。空索引表示没有限制条件。
> x
1st 2nd 3rd 4th 5th
-1 0 1 2 3
>
> x
1st 2nd 3rd 4th 5th
-1 0 1 2 3
> x[]<-0
> x
1st 2nd 3rd 4th 5th
0 0 0 0 0
注意:x<-0表示把含有单一元素(0)的向量赋给x,而x[]<-0表示把向量x中的所有元素都变成0。
1.2.8 矩阵和数组
数组存储的是多维数据元素,矩阵是数组的特殊情况,他只有两个维度。
创建矩阵,dim()和matrix()
> m<-c(1,2,3,4,5,6,7,8,9,10)
> m
[1] 1 2 3 4 5 6 7 8 9 10
> dim(m)<-c(2,5)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
> m<-matrix(c(1,2,3,4,5,6,7,8,9,10),2,5)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
函数cbind()和rbind()可以分别按列和行把两个或两个以上的向量或矩阵合并。
> m<-matrix(c(1,2,3,4,5,6,7,8,9,10),2,5)
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
> cbind(c(11,12),m)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 11 1 3 5 7 9
[2,] 12 2 4 6 8 10
> rbind(c(1,2,3,4,5),m)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 1 3 5 7 9
[3,] 2 4 6 8 10
使用函数colnames()和rownames()分别给矩阵的列和行命名。
可以通过函数array()方便的创建数组
> a<-array(1:24,dim=c(4,3,2))
> a
, , 1
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
, , 2
[,1] [,2] [,3]
[1,] 13 17 21
[2,] 14 18 22
[3,] 15 19 23
[4,] 16 20 24
可以使用与向量索引同样的方法访问数组中的元素。
> a[1,3,2]
[1] 21
> a[1,,2]
[1] 13 17 21
> a[c(2,3),,-2]
[,1] [,2] [,3]
[1,] 2 6 10
[2,] 3 7 11
循环规则和算数运算规则同样适用于矩阵和数组
> m1<-matrix(c(1,2,3,4,5,6),2,3)
> m2<-matrix(c(2,3,4,5,6,7),2,3)
> m1+m2
[,1] [,2] [,3]
[1,] 3 7 11
[2,] 5 9 13