Rstudio:遅延が追加されないと、openxlsx読み取りループがクラッシュします。なぜですか?

Rstudio:遅延が追加されないと、openxlsx読み取りループがクラッシュします。なぜですか?

openxlsxライブラリのおかげで、10の巨大なExcel 2007ファイルをdata.frameリストにロードするループがあります。遅延が追加されない場合、このループは4番目のファイルでクラッシュします。各読み取り後に500msの遅延を追加すると、問題が解決します。

なんだか教えてください?

openxlsxはJava(xlsxライブラリとは異なり)を使用していませんが、減少するよりも速く増加する「ガベージコレクション」の問題のようです...私が正しい場合は、Openxlsxよりも「科学的な」ソリューションがありますか?計画単純遅延? (<< .jcall("java/lang/System",,"gc") >> に似ています。これは Java ベースの xlsx 読み取りループに役立ちます。)

これは競合するコードの一部です(pbを解決するsys.sleep行を使用)。

Library(openxlsx)

...

for (index in 1:10) {
  print(sprintf("Loading file : %s", List_files[index]))
  Data[[List_years[index]]] <- readWorkbook(List_files[index], sheet=1, colNames=T, skipEmptyRows=T, detectDates=F)
  Sys.sleep(0.5)
}

ありがとうございます。

ベストアンサー1

昨日、この問題の解決策を見つけました。実際、 "gc()" コマンドを試しましたが、成功しませんでした...しかし、これはリセットオプションを使用して強制的にクリーンアップする必要があるためです。したがって、「gc(reset = T)」は挿入された遅延よりも機能し、効率的です。

おすすめ記事