我在R中有一个大的3d数组,我想将其转换为矩阵,其中每个条目的索引在前3列中,相应的值在第4列中。我想有效地做到这一点(因此我不想使用一堆for循环),我也想从矩阵中排除所有零条目。
sample3dArray = array(rbinom(1000, 3, .1), c(10,10,10))
答案 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添加选择规则几乎是微不足道的; ["。)。