如果数据量很小,则R具有许多可根据您的要求使用的软件包和功能。
write.xlsx,write.xlsx2,XLconnect也可以完成工作,但是与openxlsx相比,这些有时速度较慢。
因此,如果您处理的是大型数据集,并且遇到了Java错误。我建议看看“ openxlsx”,它真的很棒,可以将时间减少到。
我已经进行了全部测试,最终我对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,请先安装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中的等效功能已向量化,从而允许将数据帧列表写入多张纸。