[解決済み] テスト
質問内容
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を参照してください。
関連
-
[解決済み】 boxplotに色を追加する - "離散的なスケールに連続的な値が供給される "エラー
-
[解決済み】match.fun(FUN)でのエラーについて)
-
[解決済み】bstTreeの予測値の混乱行列、エラー:'The data must contain some levels that overlap reference'.
-
[解決済み】R 置換する項目数が置換長の倍数でない/しかし結果は正しい
-
[解決済み】Rはプロットするが、アブラインを描画しない
-
[解決済み】各グループの上位3要素を計算する際に「数値型、論理型、複合型でのみ可能な演算」を回避する方法
-
[解決済み】.External.graphics Rでエラーが発生しました。
-
[解決済み】"object not interpretable as a factor "というエラーの意味は?[クローズド]
-
[解決済み】'NULL'型の非(リストまたはベクトル)に適用されるis.na()は何を意味するのか?
-
[解決済み] ベクトルが与えられた要素を含むかどうかをテストする
最新
-
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 のエラー
-
[解決済み】エラー。Rの次元数が正しくない
-
[解決済み】添え字付き代入でNAを使用することはできません
-
[解決済み】ggplotの線幅を変更するには?
-
[解決済み】データのマージ - fix.by(by.x, x)のエラー)
-
[解決済み】match.fun(FUN)でのエラーについて)
-
[解決済み】 file(filename, "r", encoding = encoding) : cannot open the connectionでエラーが発生する。
-
[解決済み】長いオブジェクトの長さは、短いオブジェクトの長さの倍数ではない?[重複]。
-
[解決済み】Rはプロットするが、アブラインを描画しない
-
[解決済み】Rで相対的な頻度をプロットするためにhistをどのように使用しますか?