数组
2018-08-31
2018-08-31
数据结构-数组
数组以三维方式组织数据,是矩阵的扩展形式。
1 创建和访问数组
数组通过array函数创建,基本书写格式为: array(向量名,维度说明,dimnames=list(维名称列表))
例如:创建一个名为a的数组:
a<-(1:20)# 从1到20创建向量
dim1<-c("R1","R2","R3","R4") #分别给3个维度命名
dim2<-c("C1","C2","C3","C4","C5")
dim3<-c("T1","T2","T3")
a<-array(a,c(4,5,3),dimnames=list(dim1,dim2,dim3))# 数组由3张4行5列的二维表组成
a
## , , T1
##
## C1 C2 C3 C4 C5
## R1 1 5 9 13 17
## R2 2 6 10 14 18
## R3 3 7 11 15 19
## R4 4 8 12 16 20
##
## , , T2
##
## C1 C2 C3 C4 C5
## R1 1 5 9 13 17
## R2 2 6 10 14 18
## R3 3 7 11 15 19
## R4 4 8 12 16 20
##
## , , T3
##
## C1 C2 C3 C4 C5
## R1 1 5 9 13 17
## R2 2 6 10 14 18
## R3 3 7 11 15 19
## R4 4 8 12 16 20
最终执行显示的数组由3张4行5列的二维表组成
2 数组初始化
使用正态分布随机数初始化整个数组,rnorm是生成正态分布的随机数
X <- array(rnorm(40,10,5),dim=c(5,4,2)) # 由2张表行数为5列数为4的数组组成
print(X)
## , , 1
##
## [,1] [,2] [,3] [,4]
## [1,] 12.866411 14.132976 12.079013 7.521589
## [2,] 14.203661 6.422335 5.040512 13.933010
## [3,] 16.125086 13.828812 15.841530 15.994118
## [4,] 4.641585 8.176595 12.432571 16.820682
## [5,] 7.734176 9.630499 15.579859 5.310660
##
## , , 2
##
## [,1] [,2] [,3] [,4]
## [1,] 7.648093 17.492435 11.931641 3.412382
## [2,] 8.824184 10.642211 -1.110472 1.170604
## [3,] 11.968575 7.759207 9.309066 9.804229
## [4,] 6.574699 6.507813 14.598034 18.778768
## [5,] 6.699585 3.728043 12.690347 13.127786
查看矩阵所有元素的总数量
print(length(X)) # 对于矩阵length()函数得到的是所有元素的总数量
## [1] 40
查看矩阵的维度
dim(X)
## [1] 5 4 2
3 生成二维数组
使用dim( )函数建立数组,方法是将一个向量,利用dim()函数转为数组
X <- 1:20 # 从1到20创建向量
dim(X ) <- c(5,4) # 5行4列的数组
print(X )
## [,1] [,2] [,3] [,4]
## [1,] 1 6 11 16
## [2,] 2 7 12 17
## [3,] 3 8 13 18
## [4,] 4 9 14 19
## [5,] 5 10 15 20
4 数组元素处理
直接生成数组并初始化每个元素为4.88
X <- array(4.88,dim=c(2,2))
print(X )
## [,1] [,2]
## [1,] 4.88 4.88
## [2,] 4.88 4.88
生成一组重复数据。使用常数初始化指定长度的向量
X <- rep(1,5) # 生成向量x的元素始终为1且重复5次
print(X)
## [1] 1 1 1 1 1
生成向量x的元素始终为China且重复5次
X <- rep("China",5)
print(X)
## [1] "China" "China" "China" "China" "China"