R用XLSX包编写excel文件需要很长时间和错误

use*_*875 4 r

“mydata”数据框有 128,000 行。当我将它写入 xlsx 文件时,它只会继续运行,当我停止它时,我收到错误消息:

write.xlsx(x = mydata, file = "myfile.xlsx",
           sheetName = "Sheet1", row.names = FALSE)





Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
  java.lang.OutOfMemoryError: Java heap space
Run Code Online (Sandbox Code Playgroud)

你知道这是什么意思吗?

Ste*_*ven 5

write.xlsx2()也看看。根据xlsx包的文档,

函数 write.xlsx2 使用 addDataFrame,与 write.xlsx 相比,对于大型电子表格(包含超过 100,000 个单元格),执行速度提高了一个数量级。

当我向 .xslx 文件写入大量数据(即 >100,000 行)时,我遇到了与您相同的问题。使用write.xlsx2()已经解决了这些问题。

最后的方法可能是写入 .csv,在 Excel 中打开,然后重新保存为 .xlsx。

祝你好运!


小智 5

我建议您不要使用这些库(write.xlsx2 和 write.xlsx),实际上两者都在受数据大小和大量格式构建的困扰。编写数据帧的最简单方法(我假设您的原始数据位于数据帧结构中,或者可以将它们转换为数据帧)是使用writexl库。这里有一个例子:

library(writexl)

df <- data.frame(name = c("Jon", "Bill", "Maria"),
                 age = c(23,41,32))

xlx_store_path <- "where do you want to store the .xlsx file"

write_xlsx(df, xlx_store_path)
Run Code Online (Sandbox Code Playgroud)

完整来源:https ://datatofish.com/export-dataframe-to-excel-in-r/


law*_*yeR 2

如果您使用的是 Windows,请将此行添加到 R 脚本中(或从 RStudio 的控制台运行它)。

options(java.parameters = "-Xmx1024m")
Run Code Online (Sandbox Code Playgroud)

我遇到了类似的问题,但是增加内存参数解决了这个问题。

对此发表评论后,重新启动也没什么坏处。:)