【发布时间】:2014-04-10 20:11:23
【问题描述】:
我在 R 中有一个大的 3d 数组,我想将其转换为一个矩阵,其中每个条目的索引位于前 3 列,相应的值位于第四列。我想有效地做到这一点(因此我不想使用一堆 for 循环)并且我还想从矩阵中排除所有零条目。
sample3dArray = array(rbinom(1000, 3, .1), c(10,10,10))
【问题讨论】:
标签: r
我在 R 中有一个大的 3d 数组,我想将其转换为一个矩阵,其中每个条目的索引位于前 3 列,相应的值位于第四列。我想有效地做到这一点(因此我不想使用一堆 for 循环)并且我还想从矩阵中排除所有零条目。
sample3dArray = array(rbinom(1000, 3, .1), c(10,10,10))
【问题讨论】:
标签: r
我怀疑如果以效率来衡量,这将与 melt 有效竞争,尽管我喜欢 melt 的简单性:
cbind( which( sample3dArray>0, arr.ind=TRUE), sample3dArray[sample3dArray>0] )
它还具有实际返回一个矩阵的优点,我怀疑你会从melt 获得。 (以及删除 melt 没有自动提供的 0 个条目(尽管添加带有“[”的选择规则几乎是微不足道的。)。
【讨论】:
从reshape2 包使用melt:
library(reshape2)
sample3dArray = array(rbinom(1000, 3, .1), c(10,10,10))
melt(sample3dArray)
【讨论】: