将3d数组转换为每行中具有索引和值的矩阵

时间:2014-04-10 20:11:23

标签: r

我在R中有一个大的3d数组,我想将其转换为矩阵,其中每个条目的索引在前3列中,相应的值在第4列中。我想有效地做到这一点(因此我不想使用一堆for循环),我也想从矩阵中排除所有零条目。

sample3dArray = array(rbinom(1000, 3, .1), c(10,10,10))

2 个答案:

答案 0 :(得分:2)

reshape2包中使用melt

library(reshape2)

sample3dArray = array(rbinom(1000, 3, .1), c(10,10,10))
melt(sample3dArray)

答案 1 :(得分:2)

我怀疑如果以效率衡量,这将与melt有效竞争,尽管我很喜欢melt的简单性:

 cbind( which( sample3dArray>0, arr.ind=TRUE), sample3dArray[sample3dArray>0] )

它还具有实际返回矩阵的优点,我怀疑你会从melt获得。 (以及删除melt未自动提供的0个条目(尽管使用&#34添加选择规则几乎是微不足道的; ["。)。