20

フォルダーのリストでファイルを読み取り、R にデータを保存する必要があります。テスト データに次のコードを使用すると、動作します。実際のデータのコードを使用すると、次のエラーが発生します
Error: OutOfMemoryError (Java): GC overload limit exceeded Called from: top level

これは、テストデータに対して行ったことです

parent.folder <- "C:/Users/sandesh/Desktop/test_R"
sub.folder <- list.dirs(parent.folder, recursive =TRUE)[-1]
file <- file.path(sub.folder, "sandesh1.xlsx")
library(xlsx)
library(plyr)
fun <- function(file) {
  df <- read.xlsx(file, sheetIndex=1)
}
df.big <- ldply(file, fun)
4

1 に答える 1

43

これは rJava の典型的な問題です。rJavaを使用してxlsxライブラリと同じ方法でExcelに接続するXLConnectドキュメントで回答されています。ここから引用します

「これは、XLConnect (xlsx と同じ) がデータ オブジェクト全体をファイルに書き込むために JVM にコピーする必要があり、JVM をメモリ サイズの固定上限で初期化する必要があるためです。この量を変更するには、rJava のオプション サポートを介してコマンド ライン Java プロセスに渡すのと同じように、R の JVM にパラメーターを渡すことができます。

options(java.parameters = "- Xmx1024m")

ただし、これらのパラメーターは、JVM の初期化時に R セッションごとに 1 回だけ評価されることに注意してください。これは通常、Java サポートを使用する最初のパッケージをロードしたときなので、できるだけ早くこれを行う必要があります。」

上記のように、ライブラリをロードする前にスクリプトの先頭でオプション関数を実行します。Rstudio を使用して実行している場合は、スクリプトを実行する前に必ず再起動してください。

また、解析しようとしているファイルのサイズによっては、これでもうまくいくかどうかはまだ定かではないことに注意してください。

于 2014-11-26T17:45:50.323 に答える