" 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
你知道这意味着什么吗?
答案 0 :(得分:3)
同时查看write.xlsx2()
。根据{{1}}包的文档,
函数write.xlsx2使用addDataFrame,与write.xlsx相比,可以加快执行速度 大型电子表格(超过100,000个单元格)的一个数量级。
当我向.xslx文件写入大(即> 100,000行)时,我遇到了与您相同的问题。使用xlsx
解决了这些问题。
最后的手段可能是写入.csv,在Excel中打开,然后重新保存为.xlsx。
祝你好运!答案 1 :(得分:2)
如果您使用的是Windows,请将此行添加到R脚本中(或从RStudio中的控制台运行)。
options(java.parameters = "-Xmx1024m")
我遇到了类似的问题但这个内存参数的增加解决了它。
对此评论后,重启不会有什么坏处。 :)
答案 2 :(得分:2)
我建议您不要使用这些库(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)
在此处完成请求:https://datatofish.com/export-dataframe-to-excel-in-r/
答案 3 :(得分:0)
write.xlsx
在数据量很大时失败。改用以下方法:
library(xlsx)
myfile="my_excel_file_name.xlsx" #DO NOT USE SPACES, it will cause errors
wb = createWorkbook() #create a workbook object
mysheet = createSheet(wb, "Sheet1") #create a sheet and name it
addDataFrame(df1, sheet=mysheet, startColumn=1, row.names=FALSE) #add data to Sheet1
sheet = createSheet(wb, "Sheet2") #create another sheet
addDataFrame(df2, sheet=mysheet, startColumn=1, row.names=FALSE) #add data to Sheet2
#.... add as many sheets/data as you want ....
saveWorkbook(wb, myfile) #write to a physical Excel file here
将在您的默认工作目录中创建Excel文件。如果要在特定目录中创建文件,则在定义myfile
时可以使用完整地址,也可以将工作目录设置为要将文件导出到的位置:
setwd("C:/R Files/Exported Files")
如果它不起作用,请尝试通过以下方式重新启动R:
Ctrl + Shift + F10 (PC)
或
命令 + Shift + F10 (Mac)