He golpeado una pared tratando de combinar un archivo grande y uno más pequeño. Tengo readmany otras publicaciones sobre administración de memoria en R, y no he podido encontrar un método no extremo (vaya a 64 bits, cargue en un clúster, etc.) para resolverlo. He intentado un poco con el paquete bigmemory, pero no he podido encontrar una solución. Pensé en intentarlo aquí antes de levantar las manos en señal de frustración.Big Merge/administración de memoria
El código que estoy corriendo es como el siguiente:
#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
Creo que estoy preguntando ¿hay formas inteligentes de todo esto que no implican la compra de nuevo hardware?
- Necesito poder
merge
para crear un objeto más grande. - Voy a necesitar hacer regresiones, etc. con ese objeto más grande.
¿Debería darme por vencido? ¿Bigmemory debería poder ayudar a resolver esto?
Cualquier orientación muy apreciada.
Detalles: R versión 2.13.1 (2011-07-08) Plataforma: i386-pc-mingw32/i386 (32-bit) Intel 2 Duo Core @ 2,33 GHz, 3.48GB RAM
¿Has mirado el paquete 'data.table'? Es * rápido * para grandes fusiones, y casualmente puede ser más eficiente con la memoria para arrancar? – Chase
Esto probablemente no resolverá su problema, pero aquí hay algo que puede intentar. Si hay columnas en cualquiera de los conjuntos de datos que no necesita: elimínelas después de leer los datos, ejecute un gc(), y luego intente la fusión nuevamente. Otra idea es convertir sus datos a una matriz si es posible, ya que tienden a consumir menos memoria. – Rguy