У меня возникают проблемы при попытке использовать большие объекты в 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
Calloc
иFree
память, но я подозреваю, что Бенджамин не этим занимается. - person Sharpie   schedule 03.03.2011