R中的MemoryError而read.xlsx

Posted

技术标签:

【中文标题】R中的MemoryError而read.xlsx【英文标题】:MemoryError in R while read.xlsx 【发布时间】:2012-09-19 11:32:41 【问题描述】:

我正在使用以下 R 代码(也使用 Java 参数来增加内存):

library(xlsx)
options(java.parameters = "-Xmx1g")
library(XLConnect)
NiVe <- read.xlsx("version1.xlsx",1)

version1.xlsx 文件大小为 13 MB。我收到以下错误:

Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
  java.lang.OutOfMemoryError: Java heap space

有人可以帮忙吗?

【问题讨论】:

就是因为这个问题,我放弃了xlsx这个包,搬到了readxl,也就是faster 【参考方案1】:

尝试增加java堆大小(足够),使用:

options(java.parameters = "-Xmx1000m")

如果您使用的是 32 位 R,请确保您也使用 32 位 Java 和 如果您使用 64 位 R,请确保您也在使用 64 位 Java。如果 您会收到一条 Java 堆空间消息,指示它内存不足 见this post。

this thread 可以帮助你,使用垃圾收集。

参考:exchanging_data_between_r_and_ms_windows_apps_excel_etcstats-rosuda-devel_001621

【讨论】:

If you are using 32 bit R make sure you are also using 32 bit Java and if you re using 64 bit R make sure you are also using 64 bit Java。如何检查这个?【参考方案2】:

您应该确保在初始化任何 JVM 之前设置 Java 参数,即在加载 XLConnect 或 xlsx 包之前。请注意,在您的情况下,您使用的是 read.xlsx 函数,它不是 XLConnect 函数,因此不需要 XLConnect 包。 XLConnect 替代方案是函数 readWorksheetFromFile

【讨论】:

知道为什么打开 Excel 文件需要这么多内存吗?我必须将限制设置为 2 GB 才能打开 23 MB 的文件。 我和@rrs 在一起,只是在获得 25GB 内存来写入 15MB 文件后,Java 吓坏了......【参考方案3】:

试试这个:- 可能这可以工作。它对我有用

1) 下载 xlsx 文件时,使用这个 download.file(fileURL, destfile="./whatever", mode="wb")

2) 切换到常规 R,而不是 R Studio,

【讨论】:

以上是关于R中的MemoryError而read.xlsx的主要内容,如果未能解决你的问题,请参考以下文章

如何将R语言中的表格数据输出为Excel文件

R语言读取excel文件实战(read.xlsx函数read_excel函数read.xlsx函数Write函数)

如何才能拿R读取Excel文件

R中非常缓慢或失败的xls数据提取[功能read.xls,read_xls,xlsx2等]

为啥自己的r语言中读不了xlsx文件

r语言 读取xlsx文件,时间变成了43435 怎么解决?