与占用海量内存列表对象交互工作(Interactively work with list objec

2019-07-31 21:33发布

我最近发现包的奇迹bigmemoryfffilehash处理非常大的矩阵。

我该如何处理非常大(300MB +)列表? 在我的工作中,我与这些列表每天工作一整天。 我可以用创可贴解决方案save()load()黑客无处不在,但我宁愿bigmemory样的解决方案。 就像一个东西bigmemory bigmatrix将是理想的,在那里我与它的工作基本相同的matrix ,除了它在我的RAM占用somethign像660个字节。


这些列表大多>1000的长度列表lm()对象(或类似的回归对象)。 例如,

Y <- rnorm(1000) ; X <- rnorm(1000)
A <- lapply(1:6000, function(i) lm(Y~X))
B <- lapply(1:6000, function(i) lm(Y~X))
C <- lapply(1:6000, function(i) lm(Y~X))
D <- lapply(1:6000, function(i) lm(Y~X))
E <- lapply(1:6000, function(i) lm(Y~X))
F <- lapply(1:6000, function(i) lm(Y~X))

在项目中,我将有A,B,C,D,E,F型列表(甚至超过这个),我有交互工作。

如果这些巨大的矩阵有一个支持吨。 我在想,如果有任何包中的任何类似支持大list的对象。

Answer 1:

你可以存储和使用磁盘上的访问列表filehash包。 这应该工作(如果相当慢我的机器上...):

Y <- rnorm(1000) ; X <- rnorm(1000)

# set up disk object
library(filehash)
dbCreate("myTestDB")
db <- dbInit("myTestDB")

db$A <- lapply(1:6000, function(i) lm(Y~X))
db$B <- lapply(1:6000, function(i) lm(Y~X))
db$C <- lapply(1:6000, function(i) lm(Y~X))
db$D <- lapply(1:6000, function(i) lm(Y~X))
db$E <- lapply(1:6000, function(i) lm(Y~X))
db$F <- lapply(1:6000, function(i) lm(Y~X))

列表项可以通过访问[功能。 在这里看到更多的细节: http://cran.r-project.org/web/packages/filehash/vignettes/filehash.pdf



文章来源: Interactively work with list objects that take up massive memory