
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)」は挿入された遅延よりも機能し、効率的です。