R'de büyük nesneleri kullanmaya çalışırken sorunlarla karşılaşıyorum. Örneğin:
> 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
Bunun bitişik bellek bloklarını elde etmenin zorluğuyla ilgili olduğunu anlıyorum ( buradan ):
Başlayan hata mesajları, boyut vektörü tahsis edemez, bellek elde etme başarısızlığını belirtir, çünkü boyut bir işlem için adres alanı sınırını aşmıştır veya daha büyük olasılıkla, sistem belleği sağlayamamaktadır. 32 bitlik bir yapıda yeterli boş bellek olabileceğini, ancak onu eşlemek için yeterince büyük bir bitişik adres alanı bloğu olmadığını unutmayın.
Bunu nasıl aşabilirim? Benim asıl zorluğum betiğimde belirli bir noktaya gelmem ve R'nin bir nesneye 200-300 Mb ayıramaması ... Diğer işlemler için belleğe ihtiyacım olduğu için bloğu gerçekten önceden ayıramıyorum. Bu, gereksiz nesneleri özenle kaldırdığımda bile oluyor.
DÜZENLEME: Evet, üzgünüm: 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