将3D数组转换为R中的矩阵

时间:2010-10-26 09:12:52

标签: r

我正在尝试将3D数组转换为矩阵。我希望数组的第三维在矩阵中形成第一行,第三维应该按行读取(即第1行,第2行等等,第3维应该构成第1行的第3行)矩阵)。我在下面给出了一个例子,其中数组的大小为4,3和5,结果矩阵有5行12列。我有一个下面的解决方案可以实现我想要的,但对于大型数组来说它似乎非常麻烦(它首先从数组的元素(按行)创建向量,然后将这些向量组合以形成矩阵)。有没有更优雅的方式来做到这一点?提前感谢任何建议。

dat <- array( rnorm(60), dim=c(4, 3, 5) )   

results <- list(1:5)            
for (i in 1:5) {  
    vec <- c( t(dat[, , i]) )  
    results[[i]] <- vec  
    }

datNew <- rbind( results[[1]], results[[2]], results[[3]], results[[4]], results[[5]] )  

2 个答案:

答案 0 :(得分:16)

使用aperm

X <- aperm(dat,c(3,2,1))
dim(X)<- c(5, 12)

答案 1 :(得分:0)

单行答案:

t(apply(dat,3,"c"))