使用R和XLConnect包时出现“内存不足错误(Java)”

我尝试使用XLConnect包将大约30MB的Excel电子表格加载到R中。

这是我写的:

wb <- loadWorkbook("largespreadsheet.xlsx") 

约15秒后,我得到以下错误:

错误:OutOfMemoryError(Java):超出GC开销限制。

这是XLConnect包的限制还是有办法调整我的内存设置,以允许更大的文件?

我感谢任何解决scheme/提示/build议。

按照他们网站的build议:

 options(java.parameters = "-Xmx1024m") library(XLConnect) 

如果您仍然有导入XLSX文件的问题,您可以使用这个select。 “Xmx1024m”的Anwser没有工作,我改为“-Xmx4g”。

 options(java.parameters = "-Xmx4g" ) library(XLConnect) 

这个链接很有用。

openxlsx包中使用read.xlsx() 。 它对rJava没有依赖性,因此只具有R本身的内存限制。 我还没有深入探讨XLSX的编写和格式,但它有一些看起来很有希望的插图。 对于阅读大型电子表格,它运作良好。

帽子给@布拉德 – 霍恩。 我刚刚把他的评论作为答案,因为我也发现这是最好的解决scheme!

这似乎是这样的,当你不断重复使用同一个R-session而不重新启动R-Studio。 重新启动R-Studio可以帮助为程序分配一个新的内存堆。 它立刻为我工作。

如果有人遇到这个错误,而不是一个巨大的文件,但我设法解决这个错误通过释放Java虚拟机内存与xlcFreeMemory() ,因此:

 files <- list.files(path, pattern = "*.xlsx") for (i in seq_along(files)) { wb <- loadWorkbook(...) ... rm(wb) xlcFreeMemory() # <= free Java Virtual Machine memory ! } 
Interesting Posts