データサイズが小さい場合、Rには要件に応じて利用できる多くのパッケージと関数があります。
write.xlsx、write.xlsx2は、XLconnectはまた仕事をするが、これらは時々あるが遅いと比較してopenxlsx。
したがって、大規模なデータセットを処理していて、Javaエラーに遭遇した場合。本当にすごい「openxlsx」を見て、時間を1/12に短縮することをお勧めします。
私はすべてをテストしましたが、最終的にopenxlsx機能のパフォーマンスに本当に感銘を受けました。
複数のデータセットを複数のシートに書き込む手順は次のとおりです。
install.packages("openxlsx")
library("openxlsx")
start.time <- Sys.time()
x <- as.data.frame(matrix(1:4000000,200000,20))
y <- as.data.frame(matrix(1:4000000,200000,20))
z <- as.data.frame(matrix(1:4000000,200000,20))
wb <- createWorkbook("Example.xlsx")
Sys.setenv("R_ZIPCMD" = "C:/Rtools/bin/zip.exe")
Sys.setenv( "R_ZIPCMD" = "C:/Rtools/bin/zip.exe")は、Rtoolsからいくつかのユーティリティを参照するため、静的である必要があります。
注:Rtoolsがシステムにインストールされていない場合は、スムーズに使用できるように、最初にインストールしてください。ここにあなたの参照のためのリンクがあります:(適切なバージョンを選択してください)
https://cran.r-project.org/bin/windows/Rtools/
以下のリンクに従ってオプションをチェックします(インストール中にすべてのチェックボックスを選択する必要があります)
https://cloud.githubusercontent.com/assets/7400673/12230758/99fb2202-b8a6-11e5-82e6-836159440831.png
addWorksheet(wb, "Sheet 1")
addWorksheet(wb, "Sheet 2")
addWorksheet(wb, "Sheet 3")
writeData(wb, 1, x)
writeData(wb, 2, x = y, withFilter = TRUE)
writeDataTable(wb, 3, z)
saveWorkbook(wb, file = "Example.xlsx", overwrite = TRUE)
end.time <- Sys.time()
time.taken <- end.time - start.time
time.taken
openxlsxパッケージは、Excelファイルとの間で巨大なデータを読み書きするのに非常に優れており、Excel内でカスタムフォーマットを行うための多くのオプションがあります。
興味深い事実は、ここではJavaヒープメモリについて気にする必要がないということです。
createSheet
新しいシートを作成して、ループで書き込むことができる関数があります。さらに、XLConnectの同等の機能はベクトル化されており、データフレームのリストを複数のシートに書き込むことができます。