正确的方法来分配big.matrix

时间:2014-10-21 20:31:41

标签: r subset r-bigmemory

我想知道是否有适当的'在R中对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"

2 个答案:

答案 0 :(得分:2)

我已经了解到big.matrix的子集“正确”方法是使用sub.big.matrix,尽管这只适用于连续的列和/或行。目前尚未实现非连续子集化。

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

答案 1 :(得分:0)

如果不在子集上调用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"