数组

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"