相关疑难解决方法(0)

将大型xlsx文件导入R?

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

> library(XLConnect)
> wb <- loadWorkbook("MyBigFile.xlsx")
Error: OutOfMemoryError (Java): Java heap space
Run Code Online (Sandbox Code Playgroud)

要么

> library(xlsx)
> mydata <- read.xlsx2(file="MyBigFile.xlsx")
Error in .jcall("RJavaTools", "Ljava/lang/Object;", "invokeMethod", cl,  : 
   java.lang.OutOfMemoryError: Java heap space
Run Code Online (Sandbox Code Playgroud)

我还尝试在加载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
Run Code Online (Sandbox Code Playgroud)

或者在加载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: …
Run Code Online (Sandbox Code Playgroud)

excel r xlsx

68
推荐指数
6
解决办法
9万
查看次数

使用openxlsx导入多个excel表

我正在尝试将一个大的 xlsx 文件导入到包含许多数据表的 R 中。我试图通过XLConnect,但 java 内存问题(例如本线程中描述的那些已阻止此技术成功。)

相反,我正在尝试使用openxlsx我读过的包,它的工作速度要快得多,并且完全避免使用 Java。但是有没有办法read.xlsx在循环中使用它的函数将所有工作表读入单独的数据帧?我在另一个包中使用的技术不再像 bc 命令那样有效,loadWorkbook()并且getSheets()不能再使用。

感谢您的帮助。

excel r

5
推荐指数
2
解决办法
5741
查看次数

如何用R中的openxlsx包编写100万行Excel文件

我的用户不能或不想与关系数据库连接,而是更喜欢使用导出到excel文件的数据.从这些数据库数据导出的记录集可能会变得相当大.(我也导出到CSV文件).

我的问题与这个问题有关:从R写入Excel时处理java.lang.OutOfMemoryError.

正如在这个问题的接受的anser中所推荐的(或者更确切地说是第一个注释),我现在使用基于Rcpp的openxlsx包从数据库中导出一些视图.它的工作原理,当出口了〜67000行,但它并不能为更大的数据集(约1万行,约20个PARAMS,所有数值除少数日期时间)工作.

openxlsx::write.xlsx(data, file = "data.2008-2016.xlsx") # 800000 rows

Error: zipping up workbook failed. Please make sure Rtools is installed or a zip application is available to R.
         Try installr::install.rtools() on Windows
Run Code Online (Sandbox Code Playgroud)

(我使用Linux的PC,和/ usr/bin中/ ZIP 提供给R)

我可以给openxlsx包提供更多内存吗?或者设置一些可调节的选项,以便在大型数据集中表现更好?

对于openxlsx,是否有类似于options(java.parameters = "-Xmx1000m")基于java的xlsx包的东西?

openxlsx小插图没有提到任何选项.但也许有一些无证的方式或选择?(例如在保存期间显示进度条)

此时我继续这样做:关闭所有不需要的应用程序,重新启动Rstudio,在全局环境中保留很少/没有大对象,查询db,然后运行write.xlsx().使用这样的"干净的平板",它成功地将800000行数据集导出到93MB-xlsx文件.

memory-management r rcpp openxlsx

4
推荐指数
1
解决办法
2335
查看次数

标签 统计

r ×3

excel ×2

memory-management ×1

openxlsx ×1

rcpp ×1

xlsx ×1