Я наткнулся на стену, пытаясь объединить большой файл и меньший. У меня есть прочитайте много других сообщений об управлении памятью в R , и не смог найти неэкстремальный (перейти на 64-битную версию, загрузить в кластер и т. д.) метод ее решения. Я пробовал немного с пакетом bigmemory, но не смог найти решение. Я подумал, что попробую здесь, прежде чем разводить руками в отчаянии.
Код, который я запускаю, выглядит следующим образом:
#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
Думаю, я спрашиваю, есть ли какие-нибудь умные способы обойти это, не связанные с покупкой нового оборудования?
- Мне нужно иметь возможность
merge
создать объект большего размера. - Затем мне нужно будет делать регрессии и т. д. с этим большим объектом.
Должен ли я сдаться? Должна ли bigmemory помочь решить эту проблему?
Любое руководство с благодарностью.
Подробности: версия R 2.13.1 (08.07.2011) Платформа: i386-pc-mingw32/i386 (32-разрядная версия) Intel 2 Duo Core @2,33 ГГц, 3,48 ГБ ОЗУ
data.table
пакет? Это быстро для больших слияний, и по совпадению может быть более эффективным с точки зрения использования памяти для загрузки? - person Chase   schedule 22.12.2011