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