【问题标题】:Proper way to subset big.matrix子集 big.matrix 的正确方法
【发布时间】:2014-12-17 05:06:29
【问题描述】:

我想知道在 R 中是否有一种“正确”的方式来对 big.matrix 对象进行子集化。对矩阵进行子集化很简单,但该类总是恢复为“矩阵”。当处理像这样的小数据集时,这不是问题,而是处理大量数据集,但对于非常大的数据集,子集仍然可以从“big.matrix”类中受益。

require(bigmemory)
data(iris)
# I realize the warning about factors but not important for this example
big <- as.big.matrix(iris)

class(big)
[1] "big.matrix"
attr(,"package")
[1] "bigmemory"

class(big[,c("Sepal.Length", "Sepal.Width")])
[1] "matrix"

class(big[,1:2])
[1] "matrix"

【问题讨论】:

    标签: r subset r-bigmemory


    【解决方案1】:

    从那以后,我了解到对big.matrix 进行子集化的“正确”方法是使用sub.big.matrix,尽管这仅适用于连续的列和/或行。当前未实现非连续子集化。

    sm <- sub.big.matrix(big, firstCol=1, lastCol=2)
    

    【讨论】:

      【解决方案2】:

      如果不对子集调用as.big.matrix 似乎是不可能的。

      来自big.matrix 文档,

      如果x 是一个big.matrix,则x[1:5,] 将作为包含x 的前五行的R 矩阵返回。

      我认为这也适用于列。所以看来你需要打电话

      a <- as.big.matrix(big[,1:2])
      

      为了使子集也成为big.matrix 对象。

      class(a)
      # [1] "big.matrix"
      # attr(,"package")
      # [1] "bigmemory"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-06
        • 2019-11-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多