r语言 - 从三维数组到矩阵



在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

最新更新