【问题标题】:Convert a 3d array to a matrix with indices and value in each row将 3d 数组转换为每行具有索引和值的矩阵
【发布时间】:2014-04-10 20:11:23
【问题描述】:

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

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

【问题讨论】:

    标签: r


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      reshape2 包使用melt

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多