【问题标题】:Trouble with read.xlsx in RR中的read.xlsx有问题
【发布时间】:2020-11-23 19:17:02
【问题描述】:

我目前正在尝试使用 R 将(大,8.3 MB).xlsx 文件读入矩阵。我正在尝试使用 xlsx 包中的 read.xlsx 文件来执行此操作。 https://cran.r-project.org/web/packages/xlsx/index.html

我现在正尝试使用以下命令读取文件中一张工作表的内容:

sheetname<-read.xlsx("/Users/jinkinsonsmith/Downloads/Re _Introduction/filename.xlsx",sheetName='sheetname')

看起来这个命令应该可以将 xlsx 文件“文件名”中的工作表“工作表名”的内容读入向量“工作表名”。但是,相反,我收到此错误消息:

.jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl, : java.lang.OutOfMemoryError: Java 堆空间

似乎我不是第一个收到此错误消息的人(例如:How to deal with "java.lang.OutOfMemoryError: Java heap space" error?),但即使在阅读了我刚刚链接的另一篇文章之后,我仍然不清楚我应该如何解决这个问题错误。我的 MacBook Pro 长期以来一直存在磁盘空间不足并要求我删除一堆文件的问题,因此这可能是罪魁祸首,但显然我也有可能在 R 中存储了太多对对象的引用,而我没有使用时间更长,占用太多空间。在后一种情况下,我不知道如何删除任何不需要的引用。

【问题讨论】:

  • 您可以在64bits模式下更改为R
  • 您是否尝试过其他任何用于读取 XL 文件的软件包?也许是 excel.link、readexcel、readxlsb、XLCONNECT。 Javaheapspace 是 RAM,而不是磁盘。还可以考虑读取指定数量的行并为下一组行重复调用,等等。
  • 尝试openxlsx 包中的read_xlsx。它不像包xlsx那样依赖java。
  • @PaulvanOppen 我假设您的意思是“read.xlsx”,而不是“read_xlsx”,它似乎是“readxl”包而不是“openxlsx”包的一部分。好消息:read.xlsx 成功了!
  • 是的,你是对的:read.xlsx

标签: r xlsx


【解决方案1】:

通过在加载任何其他包之前使用以下代码行,我可以解决类似的问题。我已经描述过here

options(java.parameters = c("-XX:+UseConcMarkSweepGC", "-Xmx8192m"))
library(xlsx)

请添加此行并重新启动,因为其他包可以自己加载一些 java 的东西,并且必须设置选项在加载任何 Java 之前

一般来说,这些选项会更改垃圾收集的类型,这有时会导致默认设置出现问题,并且还会将内存增加到 8GB。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 2015-08-21
    • 1970-01-01
    • 2019-09-09
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多