Управление памятью R / не удается выделить вектор размером n МБ

Я столкнулся с проблемами при попытке использовать большие объекты в R. Например:

> memory.limit(4000)
> a = matrix(NA, 1500000, 60)
> a = matrix(NA, 2500000, 60)
> a = matrix(NA, 3500000, 60)
Error: cannot allocate vector of size 801.1 Mb
> a = matrix(NA, 2500000, 60)
Error: cannot allocate vector of size 572.2 Mb # Can't go smaller anymore
> rm(list=ls(all=TRUE))
> a = matrix(NA, 3500000, 60) # Now it works
> b = matrix(NA, 3500000, 60)
Error: cannot allocate vector of size 801.1 Mb # But that is all there is room for

Я понимаю, что это связано с трудностью получения непрерывных блоков памяти (из здесь ) :

Сообщение об ошибке начало не может выделить вектор размера указать невозможность получить память, либо потому что размер превысил ограничение адресного пространства для процесса или, более вероятно, потому что система была не может предоставить память. Запись что на 32-битной сборке вполне может хватит свободной памяти, но недостаточно большой непрерывный блок адресное пространство, в которое его нужно отобразить.

Как я могу обойти это? Моя основная трудность заключается в том, что я дохожу до определенного момента в моем скрипте, и R не может выделить 200-300 МБ для объекта ... Я не могу заранее выделить блок, потому что мне нужна память для другой обработки. Это происходит даже тогда, когда я старательно удаляю ненужные объекты.

РЕДАКТИРОВАТЬ: Да, извините: Windows XP SP3, 4 ГБ ОЗУ, R 2.12.0:

> sessionInfo()
R version 2.12.0 (2010-10-15)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_Caribbean.1252  LC_CTYPE=English_Caribbean.1252   
[3] LC_MONETARY=English_Caribbean.1252 LC_NUMERIC=C                      
[5] LC_TIME=English_Caribbean.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

131
задан Gregor 6 July 2018 в 14:13
поделиться