Ho colpito un muro cercando di unire un file di grandi dimensioni e uno più piccolo. Ho readmany altri post sulla gestione della memoria in R, e non sono stato in grado di trovare un metodo non estremo (vai 64bit, carica in un cluster, ecc.) Per risolverlo. Ho provato un po 'con il pacchetto bigmemory, ma non sono riuscito a trovare una soluzione. Ho pensato di provare qui prima di alzare le mani per la frustrazione.Big Merge/Gestione memoria
Il codice sto correndo è come qui sotto:
#rm(list=ls())
localtempdir<- "F:/Temp/"
memory.limit(size=4095)
[1] 4095
memory.size(max=TRUE)
[1] 487.56
gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 170485 4.6 350000 9.4 350000 9.4
Vcells 102975 0.8 52633376 401.6 62529185 477.1
client_daily<-read.csv(paste(localtempdir,"client_daily.csv",sep=""),header=TRUE)
object.size(client_daily)
>130MB
sbp_demos<-read.csv(paste(localtempdir,"sbp_demos",sep=""))
object.size(demos)
>0.16MB
client_daily<-merge(client_daily,sbp_demos,by.x="OBID",by.y="OBID",all.x=TRUE)
Error: cannot allocate vector of size 5.0 MB
immagino che sto chiedendo ci sono modi intelligenti di tutto questo, che non implicano l'acquisto di nuovo hardware?
- Devo essere in grado di
merge
per creare un oggetto più grande. - Avrò quindi bisogno di fare regressioni ecc con quell'oggetto più grande.
Devo rinunciare? Il grande pubblico dovrebbe essere in grado di aiutare a risolvere questo problema?
Qualsiasi consiglio molto apprezzato.
dettagli: R versione 2.13.1 (2011-07-08) Piattaforma: i386-pc-mingw32/i386 (32-bit) Intel core 2 Duo @ 2.33GHz, 3.48GB di RAM
Hai visto il pacchetto 'data.table'? È * veloce * per grandi fusioni e, casualmente, potrebbe essere più efficiente in termini di memoria da avviare? – Chase
Questo probabilmente non risolverà il tuo problema, ma qui puoi provare qualcosa. Se ci sono colonne in un set di dati che non è necessario: rimuoverli dopo aver letto i dati, eseguire un gc(), quindi provare di nuovo l'unione. Un'altra idea è quella di convertire i dati in una matrice, se possibile, poiché tendono a consumare meno memoria. – Rguy