2012-09-25 10 views
8

Ho recentemente scoperto le meraviglie dei pacchetti bigmemory, ff e filehash per gestire matrici molto grandi.Funziona in modo interattivo con gli oggetti elenco che occupano enorme memoria

Come posso gestire elenchi molto grandi (300MB ++)? Nel mio lavoro lavoro con queste liste tutto il giorno tutti i giorni. Posso fare una soluzione di cerotto con save() & load() hack ovunque, ma preferirei una soluzione bigmemory -like. Qualcosa di simile a bigmemorybigmatrix sarebbe l'ideale, in cui lavoro praticamente identico a un matrix tranne che occupa qualcosa come 660 byte nella mia RAM.


Questi elenchi sono per lo più >1000 liste di lunghezza di lm() oggetti (o oggetti di regressione simili). Ad esempio,

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

Nel mio progetto ho avrà A,B,C,D,E,F tipo list (e ancora di più di questo) che devo lavorare con in modo interattivo.

Se queste erano matrici gigantesche, c'è una tonnellata di supporto. Mi chiedevo se esistesse un supporto simile in qualsiasi pacchetto per gli oggetti grandi list.

+0

Stai chiedendo suggerimenti su quale pacchetto usare? – GSee

+2

Appare troppo vago per supportare i consigli sulle "migliori pratiche". Sarebbe necessario descrivere la natura di queste "liste". Forse una delle interfacce del database. I consigli per la codifica richiedono una descrizione dell'attività migliore. –

+1

Guarda il pacchetto [SOAR] (http://cran.r-project.org/web/packages/SOAR/index.html) forse? – mnel

risposta

2

È possibile memorizzare e accedere a elenchi su disco utilizzando il pacchetto . Questo dovrebbe funzionare (se piuttosto lentamente sulla mia macchina ...):

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

elementi dell'elenco è possibile accedere utilizzando la funzione [. Vedi qui per maggiori dettagli: http://cran.r-project.org/web/packages/filehash/vignettes/filehash.pdf

Problemi correlati