20200511·Kony·Win10
数组
数组:一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的。
1.构建数组
- 数组函数是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
其中dims为整数,表示哪个或哪些维数被看做行或列,对于row统计函数,dims+1及以后的维度被看做行,对于col函数,dims及以前的维度(1:dims)被看做列:
e<-array(c(1:27),dims<-c(3,3,3))
e
rowSums(e)
rowSums(e,dims=1)
rowSums(e,dims=2)
colSums(e)
colSums(e,dims=1)
colSums(e,dims=2)
e
## , , 1
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
## , , 2
## [,1] [,2] [,3]
## [1,] 10 13 16
## [2,] 11 14 17
## [3,] 12 15 18
## , , 3
## [,1] [,2] [,3]
## [1,] 19 22 25
## [2,] 20 23 26
## [3,] 21 24 27
rowSums(e)
## [1] 117 126 135
rowSums(e,dims=1)
## [1] 117 126 135 ## 1+4+7+10+13+16+19+22+25=117
rowSums(e,dims=2)
## [,1] [,2] [,3]
## [1,] 30 39 48 ## 1+10+19=30
## [2,] 33 42 51
## [3,] 36 45 54
colSums(e)
## [,1] [,2] [,3]
## [1,] 6 33 60 ## 第一列:1+2+3=6 10+11+12=33 19+20+21=60
## [2,] 15 42 69 ## 第二列。···
## [3,] 24 51 78
colSums(e,dims=1)
## [,1] [,2] [,3]
## [1,] 6 33 60
## [2,] 15 42 69
## [3,] 24 51 78
colSums(e,dims=2)
## [1] 45 126 207
## 45:1+2+3+4+5+6+7+8+9 第一个数组里所有元素的总和
## 126:10+11+12+13+14+15+16+17+18 第二个数组里所有元素的总和
2. 数组命名
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
3. 行列求和、均值、频数
简短数组
a<-array(rep(1:4,each=3),dim=c(2,3,2))
a
## , , 1
## [,1] [,2] [,3]
## [1,] 1 1 2
## [2,] 1 2 2
## , , 2
## [,1] [,2] [,3]
## [1,] 3 3 4
## [2,] 3 4 4
rowSums(a)
## [1] 14 16
colSums(a)
## [,1] [,2]
## [1,] 2 6
## [2,] 3 7
## [3,] 4 8
table(a) ##频数表
## a
## 1 2 3 4
## 3 3 3 3
多维数组
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
参考1:R语言基础--数据类型之数组
参考2:RVDSD的个人笔记