数组
参考http://rvdsd.top/categories/R/
什么是数组
数组:一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的。
构建数组
数组函数是array(),语法是:array(data, dim),其中data必须是同一类型的数据,dim是各维的长度组成的向量。函数rowSums, colSums, rowMeans, colMeans分别可以计算行总和,行均值,列总和,列均值,如下所示:
a<-array(rep(1:3,each=3),dim=c(3,3))
a
## [,1] [,2] [,3]
## [1,]1 2 3
## [2,]1 2 3
## [3,]1 2 3
rowSums(a)
## [1] 6 6 6
colSums(a)
## [1] 3 6 9
table(a)
## a
## 1 2 3
## 3 3 3
多维数组
colSums (x, na.rm = FALSE, dims = 1)
rowSums (x, na.rm = FALSE, dims = 1)
colMeans(x, na.rm = FALSE, dims = 1)
rowMeans(x, na.rm = FALSE, dims = 1)
其中dims为整数,表示哪个或哪些维数被看做行或列,对于row统计函数,dims+1及以后的维度被看做行,对于col函数,dims及以前的维度(1:dims)被看做列:
b <- array(rep(1:3, each=9), dim=c(3,3,3));b
## , , 1
##
## [,1] [,2] [,3]
## [1,]1 1 1
## [2,]1 1 1
## [3,]1 1 1
##
## , , 2
##
## [,1] [,2] [,3]
## [1,]2 2 2
## [2,]2 2 2
## [3,]2 2 2
##
## , , 3
##
## [,1] [,2] [,3]
## [1,]3 3 3
## [2,]3 3 3
## [3,]3 3 3
rowSums(b)
## [1] 18 18 18
rowSums(b,dims=1)
## [1] 18 18 18
rowSums(b,dims=2)
## [,1] [,2] [,3]
## [1,]6 6 6
## [2,]6 6 6
## [3,]6 6 6
colSums(b)
## [,1] [,2] [,3]
## [1,]3 6 9
## [2,]3 6 9
## [3,]3 6 9
colSums(b,dims=2)
## [1] 9 18 27
table(b)
## b
## 1 2 3
## 9 9 9
数组命名
x<-1:3 #建立向量x
names(x) #提取向量x的名称
## NULL
names(x)<-c("a","b","c");x#将a,b,c作为x的名称
## a b c
## 1 2 3
names(x)#显示向量x的名称
## [1] "a" "b" "c"
names(x)<-NULL;x #删除向量x的名称
## [1] 1 2 3
x<-matrix(1:4,2)
rownames(x)<-c("a","b") # 将行命名为a,b
colnames(x)<-c("c","d");x # 将列命名为c,d
## c d
## a 1 3
## b 2 4
dimnames(x)#返回包含两个向量的列表
## [[1]]
## [1] "a" "b"
##
## [[2]]
## [1] "c" "d"
a<-array(1:8,dim=c(2,2,2));a#建立数组a,维度为2,2,2
## , , 1
##
## [,1] [,2]
## [1,]1 3
## [2,]2 4
##
## , , 2
##
## [,1] [,2]
## [1,]5 7
## [2,]6 8
dimnames(a)<-list(c("a","b"),c("c","d"),c("e","f"));a # 将数组a的各组命名
## , , e
##
## c d
## a 1 3
## b 2 4
##
## , , f
##
## c d
## a 5 7
## b 6 8
行列求和,平均值和频数
简单数组
a <- array(rep(1:3, each=3), dim=c(3,3));a
## [,1] [,2] [,3]
## [1,]1 2 3
## [2,]1 2 3
## [3,]1 2 3
rowSums(a) # 求行的和
## [1] 6 6 6
colSums(a) # 求列的和
## [1] 3 6 9
table(a) # 频数表
## a
## 1 2 3
## 3 3 3
多维数组
对于多维数组,rowSums, colSums, rowMeans, colMeans的使用稍为复杂点。它们的参数为:
b <- array(rep(1:3, each=9), dim=c(3,3,3));b
## , , 1
##
## [,1] [,2] [,3]
## [1,]1 1 1
## [2,]1 1 1
## [3,]1 1 1
##
## , , 2
##
## [,1] [,2] [,3]
## [1,]2 2 2
## [2,]2 2 2
## [3,]2 2 2
##
## , , 3
##
## [,1] [,2] [,3]
## [1,]3 3 3
## [2,]3 3 3
## [3,]3 3 3
rowSums(b)
## [1] 18 18 18
rowSums(b,dims=1)
## [1] 18 18 18
rowSums(b,dims=2)
## [,1] [,2] [,3]
## [1,]6 6 6
## [2,]6 6 6
## [3,]6 6 6
colSums(b)
## [,1] [,2] [,3]
## [1,]3 6 9
## [2,]3 6 9
## [3,]3 6 9
colSums(b,dims=2)
## [1] 9 18 27
table(b)
## b
## 1 2 3
## 9 9 9
c <- sample(letters[1:5], 10, replace=TRUE)
table(c)
## c
## a b d e
## 1 3 2 4