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文件实战(read.xlsx函数read_excel函数read.xlsx函数Write函数)