一部のシミュレーション コードをベクトル化する過程で、メモリの問題に遭遇しました。Windows XP で 32 ビット R バージョン 2.15.0 (RStudio バージョン 0.96.122 経由) を使用しています。私のマシンには 3.46 GB の RAM があります。
> sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: i386-pc-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] Matrix_1.0-6 lattice_0.20-6 MASS_7.3-18
loaded via a namespace (and not attached):
[1] grid_2.15.0 tools_2.15.0
問題の最小限の例を次に示します。
> memory.limit(3000)
[1] 3000
> rm(list = ls())
> gc()
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 1069761 28.6 1710298 45.7 1710298 45.7
Vcells 901466 6.9 21692001 165.5 173386187 1322.9
> N <- 894993
> library(MASS)
> sims <- mvrnorm(n = N, mu = rep(0, 11), Sigma = diag(nrow = 11))
> sims <- mvrnorm(n = N + 1, mu = rep(0, 11), Sigma = diag(nrow = 11))
Error: cannot allocate vector of size 75.1 Mb
(私のアプリケーションでは、共分散行列シグマは対角ではありませんが、どちらの方法でも同じエラーが発生します。)
午後は、R のメモリ割り当ての問題について読みました (ここ、ここ、ここを含む)。私が読んだことから、それは使用可能な RAM 自体の問題ではなく、使用可能な連続アドレス空間の問題であるという印象を受けます。それでも、75.1Mb はかなり小さいように思えます。
ご意見やご提案をいただければ幸いです。