2012-09-25 15 views
8

Son zamanlarda çok büyük matrisleri işlemek için bigmemory, ff ve filehash paketlerinin harikalarını keşfettim.Devasa bellek alan liste nesneleriyle interaktif olarak çalışın

Çok büyük (300MB ++) listelerle nasıl başa çıkabilirim? Çalışmamda her gün bu listelerle çalışıyorum. Her yerde save() & load() hack ile bant yardımı çözümü yapabilirim ama ben bir bigmemory benzeri bir çözüm tercih ederim. bigmemorybigmatrix gibi bir şey, temel olarak, matrix ile aynı şekilde çalışacağım ve RAM'imde 660 bayt gibi bir şey kaplaması dışında ideal olacaktır.


Bu listeler genellikle lm() nesne (veya benzer regresyon nesnelerin) >1000 uzunluğu listesi. Örneğin, Projemde

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)) 

ben etkileşimli çalışmak zorunda (bundan daha ve daha da) A,B,C,D,E,F tipi listelerini olacaktır.

Bunlar devasa matrisler ise, bir miktar destek var. Büyük list nesneleri için herhangi bir pakette benzer bir destek olup olmadığını merak ediyordum.

+0

Hangi paketin kullanılacağı konusunda öneri soruyor musunuz? – GSee

+2

Görünüş, "en iyi uygulamalar" tavsiyesini desteklemek için çok belirsiz. Bu "listelerin" doğasını açıklamak gerekli olacaktır. Belki de veritabanı arayüzlerinden biri. Kodlama tavsiyesi daha iyi bir görev tanımı gerektirir. –

+1

Belki de [SOAR] (http://cran.r-project.org/web/packages/SOAR/index.html) paketine bakın? – mnel

cevap

2

paketini kullanarak diskteki listeleri saklayabilir ve bunlara erişebilirsiniz. Bu (... benim makinede oldukça yavaş ise) çalışması gerekir:

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)) 

Liste öğeleri [ işlevini kullanarak erişilebilir. Daha fazla bilgi için buraya bakın: http://cran.r-project.org/web/packages/filehash/vignettes/filehash.pdf

İlgili konular