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
나는 이것이 인접한 메모리 블록을 얻는 것이 어렵다는 것을 이해합니다 ( here ).
크기의 벡터를 할당 할 수없는 오류 메시지는 크기가 프로세스의 주소 공간 한계를 초과했거나 시스템이 메모리를 제공 할 수 없었기 때문에 메모리를 확보하지 못했음을 나타냅니다. 32 비트 빌드에는 사용 가능한 충분한 여유 메모리가있을 수 있지만이를 맵핑 할 수있는 충분히 인접한 주소 공간 블록은 없습니다.
이 문제를 어떻게 해결할 수 있습니까? 내 주요 어려움은 스크립트의 특정 지점에 도달하고 R이 객체에 200-300 Mb를 할당 할 수 없다는 것입니다. 다른 처리를 위해 메모리가 필요하기 때문에 실제로 블록을 미리 할당 할 수 없습니다. 불필요한 객체를 제거 할 때에도 마찬가지입니다.
편집 : 예, 죄송합니다 : 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
Calloc
와 Free
메모리,하지만 난이 베냐민하고있는 것이 아니다 생각한다.