[解決済み】Rのメモリ管理/サイズn Mbのベクトルを割り当てられない
質問内容
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
連続したメモリブロックの取得が困難なことと関係していると理解しています(から こちら ):
cannot で始まるエラーメッセージ サイズのベクターを割り当てることは メモリの取得に失敗しました。 サイズを超えたため プロセスのアドレス空間の制限、または より可能性が高いのは、システムが は、メモリを提供できない。注 32ビットのビルドでは 十分な空きメモリがあるが 十分な大きさの連続したブロックでない のアドレス空間へマッピングすることができます。
どうすれば回避できるのでしょうか?私の最大の難点は、スクリプトのある時点になると、Rがオブジェクトに200-300Mbを割り当てられないことです...。他の処理のためにメモリが必要なので、ブロックを事前に割り当てることができないんです。この現象は、不要なオブジェクトを削除しても発生します。
EDIT: はい、すみません: 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
解決方法は?
本当にすべてのデータが明示的に必要なのか、それとも行列を疎にすることができるのか、検討してみてください。Rでは良いサポートがあります(
Matrix
パッケージなど) で疎行列を扱うことができます。
このサイズのオブジェクトを作る必要があるときは、Rの他のプロセスやオブジェクトは最小限にとどめてください。使用方法
gc()
を使用して未使用のメモリをクリアするか、より良い方法は
一回のセッションで必要なオブジェクトのみを作成する
.
上記で解決できない場合は、64ビットマシンを用意し、余裕のある限りのRAMを搭載し、64ビットRをインストールしてください。
それができない場合は、リモートコンピューティングのためのオンラインサービスがたくさんあります。
もし、それができないのであれば、メモリマップツールである package
ff
(または
bigmemory
Saschaが言及しているように)は、新しいソリューションを構築するのに役立ちます。私の限られた経験では
ff
は、より高度なパッケージですが、あなたが読むべきは
High Performance Computing
のトピックにあるCRAN Task Viewsを参照してください。
関連
-
[解決済み】プロット時に 'x' と 'y' の長さが異なる ERROR が発生する。
-
[解決済み] テスト
-
[解決済み】Rでの関数の最適化(L-BFGS-Bでは'fn'に有限の値が必要)。
-
[解決済み】エラー。Rの'break'の数が無効
-
[解決済み】R ggplot2 で scale_x_discrete を使用する。
-
[解決済み】ggplotのエラー。関数型オブジェクトのスケールを自動的に選択する方法がわかりません。
-
[解決済み】Rで文字ベクトルから引用符を削除する
-
[解決済み】Rで結果の行数がベクトル長(arg 2)の倍数でない件
-
[解決済み] テスト
-
[解決済み] ベクトルが与えられた要素を含むかどうかをテストする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 'height' はベクトルか行列でなければならない barplot のエラー
-
[解決済み】knitrのドキュメントでinstall.packagesが失敗する。"ミラーを設定せずにCRANを使おうとしている"
-
[解決済み] Stataバージョン5-12の.dtaファイルではない
-
[解決済み] テスト
-
[解決済み】「次のオブジェクトは 'package:xxx' からマスクされています」とはどういう意味ですか?
-
[解決済み】エラー。Rの'break'の数が無効
-
[解決済み】ロジスティック回帰 - eval(family$initialize) : y 値は 0 <= y <= 1 である必要があります。
-
[解決済み】dplyr: "Error in n(): 関数は直接呼ばれるべきではありません"
-
[解決済み】"object not interpretable as a factor "というエラーの意味は?[クローズド]
-
[解決済み】seq_alongはうまくいくが、seqが意図しない結果を生む例とは?