6.13 多维数组

多维数组的行列是怎么定义的 ?array 轴的概念,画个图表示数组

array(1:27, c(3, 3, 3))
## , , 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

垂直于Z轴的平面去截三维立方体,3 代表 z 轴,得到三个截面(二维矩阵)

asplit(array(1:27, c(3, 3, 3)), 3)
## [[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

对每个二维矩阵按列求和

lapply(asplit(array(1:27, c(3, 3, 3)), 3), apply, 2, sum)
## [[1]]
## [1]  6 15 24
## 
## [[2]]
## [1] 33 42 51
## 
## [[3]]
## [1] 60 69 78

asplitlapply 组合处理多维数组的计算问题

三维数组的矩阵运算 abind 包提供更多的数组操作,如合并,替换

数组操作 aperm 数组转置 Array Transposition

asplit 数组拆分 其后接 lapply 或者 vapply

apply 数组计算

rray 包 https://github.com/r-lib/rray