我想知道是否有办法从一个“大”的xlsx文件(约20MB)中导入数据。我尝试使用xlsx和XLConnect库。不幸的是,两者都使用rJava,我总是得到相同的错误:
> library(XLConnect)
> wb <- loadWorkbook("MyBigFile.xlsx")
Error: OutOfMemoryError (Java): Java heap space
或者> 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:
> 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之后(我认为这有点愚蠢):
> 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
但是什么都没有起作用。有人有想法吗?
gdata
是另一个选项。我认为它不是基于 Java 的,但我可能弄错了。 - Ricardo Saportagdata
是唯一能够完成这项任务的 Excel 包。就像这里所说,基于 Java 的包会用尽内存;openxlsx
则会崩溃。每个表格需要花费 30 分钟,但gdata
完成了任务。 - Matt Parker