首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将一个大的xlsx文件导入R?

将一个大的xlsx文件导入R?
EN

Stack Overflow用户
提问于 2013-10-03 06:31:10
回答 7查看 104.7K关注 0票数 79

我想知道是否有人知道从一个“大”的xlsx文件(~20Mb)导入数据的方法。我尝试使用xlsx和XLConnect库。不幸的是,两者都使用rJava,我总是得到相同的错误:

代码语言:javascript
复制
> library(XLConnect)
> wb <- loadWorkbook("MyBigFile.xlsx")
Error: OutOfMemoryError (Java): Java heap space

代码语言:javascript
复制
> library(xlsx)
> mydata <- read.xlsx2(file="MyBigFile.xlsx")
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
   java.lang.OutOfMemoryError: Java heap space

在加载rJava之前,我还尝试修改了java.parameters:

代码语言:javascript
复制
> options( java.parameters = "-Xmx2500m")
> library(xlsx) # load rJava
> mydata <- read.xlsx2(file="MyBigFile.xlsx")
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
   java.lang.OutOfMemoryError: Java heap space

或者在加载rJava之后(我认为这有点愚蠢):

代码语言:javascript
复制
> library(xlsx) # load rJava
> options( java.parameters = "-Xmx2500m")
> mydata <- read.xlsx2(file="MyBigFile.xlsx")
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
   java.lang.OutOfMemoryError: Java heap space

但是什么都不起作用。有谁有主意吗?

EN

回答 7

Stack Overflow用户

发布于 2014-08-15 05:28:09

当有人给我发送(又一个) Excel文件进行分析时,我偶然发现了这个问题。这个错误甚至没有那么大,但无论出于什么原因,我都遇到了类似的错误:

代码语言:javascript
复制
java.lang.OutOfMemoryError: GC overhead limit exceeded

根据@DirkEddelbuettel在之前的回答中的评论,我安装了openxlsx包(http://cran.r-project.org/web/packages/openxlsx/)。然后运行:

代码语言:javascript
复制
library("openxlsx")
mydf <- read.xlsx("BigExcelFile.xlsx", sheet = 1, startRow = 2, colNames = TRUE)

这正是我要找的。简单易用,速度极快。这是我的新朋友。感谢你的提示@DirkEddelbuettel!

顺便说一句,我不想从Dirk E那里窃取这个答案,所以如果他发布了一个答案,请接受它,而不是我的!

票数 152
EN

Stack Overflow用户

发布于 2016-01-14 01:26:31

代码语言:javascript
复制
options(java.parameters = "-Xmx2048m")  ## memory set to 2 GB
library(XLConnect)

在加载任何java组件之前,使用“选项”允许更多的内存。然后加载XLConnect库(它使用java)。

就这样。开始使用readWorksheet读取数据...诸若此类。:)

票数 16
EN

Stack Overflow用户

发布于 2018-05-15 10:18:02

我知道这个问题有点老了,但现在已经有了一个很好的解决方案。当你试图用GUI在Rstudio中导入excel时,这是一个默认的包,它在我的情况下工作得很好。

代码语言:javascript
复制
library(readxl)

data <- read_excel(filename)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19147884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档