R 语言可以创建一维或多维数组。R 语言数组是一个同一类型的集合,矩阵 matrix 其实就是一个二维数组。
Usage
array(data = NA, dim = length(data), dimnames = NULL)
1. 数组创建
# 一维数组
a <- array(c(1:20))
# 二维数组
a <- array(c(1:30),dim=c(6,5))
# 三维数组,data元素循环使用
a <- array(data=c(1:30),dim=c(6,5,2))
array(0,dim=c(3,4,2))
注:一维数组通常看起来像向量,但某些函数的处理方式可能有所不同;二维数组就是矩阵
2. 命名数组列和行
row.names <- c("ROW1","ROW2","ROW3")
column.names <- c("COL1","COL2","COL3")
matrix.names <- c("Matrix1","Matrix2")# 创建数组
result <- array(data = c(1:18),dim = c(3,3,2),dimnames = list(row.names, column.names, matrix.names))
# 修改第一纬度名称(行名)
dimnames(result)[1] = list(c("r1","r2","r3"))
# 修改各个维度名称
dimnames(result) = list(c("r1","r2","r3"),c("c1","c2","c3"),c("m1","m2"))
3. 数组元素操作
a <- array(c(11:70),dim=c(6,5,2))
dim(a) # 查看维度a[1,2,1] # 一个元素a[,,2] # 第二个matrixa[3,,2] # 第二个matrix的第三行a[3,,] # 所有matrix的第三行a[c(1,3),2,] # 所有matrix的第一三行和第二列# 修改
a[1,2,1] = 100# 选择,返回向量
a[which(a>30)]
a[a>30]# 数组的四则运算
b <- array(c(10:60),dim=c(6,5,2))
a*2+b
4. 跨数组元素的计算
# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)# Take these vectors as input to the array.
new.array <- array(c(vector1,vector2),dim = c(3,3,2))
print(new.array)# 第一维度(行)求和. across所有列和所有matrix,返回向量,长度等于行数。
result <- apply(new.array, c(1), sum)
print(result)
# 两个matrix相加
result <- apply(new.array, c(1,2), sum)
print(result)