R gestión de memoria / no se puede asignar vector de tamaño n Mb

Me encuentro con problemas al intentar usar objetos grandes en R. Por ejemplo:

> 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

Entiendo que esto está relacionado con la dificultad de obtener bloques contiguos de memoria (deaqu):

os mensajes @Error que comienzan no pueden asignar un vector de tamaño que indica que no se pudo obtener memoria, ya sea porque el tamaño excedió el límite de espacio de direcciones para un proceso o, más probablemente, porque el sistema no pudo proporcionar la memoria. Tenga en cuenta que en una compilación de 32 bits puede haber suficiente memoria libre disponible, pero no un bloque contiguo de espacio de direcciones lo suficientemente grande como para mapearlo.

¿Cómo puedo evitar esto? Mi principal dificultad es que llego a cierto punto en mi script y R no puede asignar 200-300 Mb para un objeto ... Realmente no puedo preasignar el bloque porque necesito la memoria para otro procesamiento. Esto sucede incluso cuando elimino diligentemente objetos innecesarios.

EDIT: Sí, lo siento: Windows XP SP3, 4Gb RAM, 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

Respuestas a la pregunta(8)

Su respuesta a la pregunta