Jas*_*ase 8 memory memory-management r list filehash
我最近发现了包的奇迹bigmemory,ff并filehash处理了非常大的矩阵.
如何处理非常大的(300MB ++)列表?在我的工作中,我每天都在使用这些列表.我可以在任何地方使用save()和load()黑客进行创可贴解决方案,但我更喜欢类似bigmemory解决方案.类似于a的东西bigmemory bigmatrix是理想的,我使用它基本上与a相同,matrix除了它占用了我的RAM中的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))
Run Code Online (Sandbox Code Playgroud)
在我的项目中,我将拥有A,B,C,D,E,F-type列表(甚至更多),我必须以交互方式工作.
如果这些是巨大的矩阵,那就有一吨支持.我想知道在大型list对象的任何包中是否有任何类似的支持.
您可以使用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))
Run Code Online (Sandbox Code Playgroud)
可以使用该函数访问列表项[。有关更多详细信息,请参阅此处:http://cran.r-project.org/web/packages/filehash/vignettes/filehash.pdf