R:将数据帧写入具有大量行的excel

时间:2016-03-09 13:51:49

标签: r excel

我在R中有一个数据框(面板形式),有194498行和7列。我想使用函数res <- write.xlsx(df, output)将其写入Excel文件(.xlsx),但R进入昏迷状态(在控制台的左上角保持停止符号),而不对目标文件(输出)进行任何更改。最后显示如下: Error in .jcheck(silent = FALSE) : Java Exception <no description because toString() failed>.jcall(row[[ir]], "Lorg/apache/poi/ss/usermodel/Cell;", "createCell", as.integer(colIndex[ic] - 1))<S4 object of class "jobjRef"> 我已经加载了readxl和xlsx包。请建议修复它。感谢。

3 个答案:

答案 0 :(得分:2)

安装并加载名为'WriteXLS'的包,并尝试使用函数WriteXLS()写出您的R对象。确保你的R对象是用“数据”下面的引号写的。

 # Store your data with 194498 rows and 7 columns in a data frame named   'data'

 # Install package named WriteXLS
 install.packages("WriteXLS")

 # Loading package
 library(WriteXLS)

 # Writing out R object 'data' in an Excel file created namely data.xlsx 
 WriteXLS("data",ExcelFileName="data.xlsx",row.names=F,col.names=T)

希望这会有所帮助。

答案 1 :(得分:2)

这不能解答您的问题,但可能是您问题的解决方案。

可以将文件保存为CSV,如下所示:

write.csv(df , "df.csv")

打开CSV,然后另存为Excel文件。

我放弃尝试使用R导入/导出Excel文件,因为这样的麻烦。

答案 2 :(得分:0)

  1. 除了Pete的回答外,我不建议使用write.csv,因为它需要花费几分钟甚至很长时间才能加载。我使用了fwrite()(来自data.table库),它在大约1-2秒内完成了相同的操作。

  2. 帖子作者询问了大文件。我处理了一个长约230万行的表,并且write.data(和frwrite)写的行不超过约100万行。它只是切断数据。因此,请改用write.table(Data, file="Data.txt")。您可以在Excel中打开它,并用定界符(使用参数sep)将第一列分开,瞧!