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
asplit
和 lapply
组合处理多维数组的计算问题
三维数组的矩阵运算 abind 包提供更多的数组操作,如合并,替换
数组操作 aperm 数组转置 Array Transposition
asplit 数组拆分 其后接 lapply 或者 vapply
apply 数组计算