在R中,我想将数组(维度:i,j,k)转换为矩阵,以便新矩阵的观察(即行)是一次从数组中提取k个"层"的每个元素。本质上,同样,新矩阵的行将由前一个数组的每个元素组成,矩阵的列等效于数组的 k 维。因此,新矩阵应由具有 k 列的 i*j 行组成。
如果我能澄清或提供输入/输出的示例,请告诉我!
谢谢!
编辑:这段代码有效(但未优化) —
m = array(1:27,dim = c(3,3,3))
m
dim = dim(m)
mparam = dim[3]
listm = list()
for (i in 1:mparam){
listm[[i]] = as.vector(m[,,i])
}
untran = do.call(rbind,listm)
transposed = t(untran)
transposed
像这样?
m <- array(1:27,dim = c(3,3,3))
> m
, , 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
> matrix(m,9,3)
[,1] [,2] [,3]
[1,] 1 10 19
[2,] 2 11 20
[3,] 3 12 21
[4,] 4 13 22
[5,] 5 14 23
[6,] 6 15 24
[7,] 7 16 25
[8,] 8 17 26
[9,] 9 18 27