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

knb*_*knb 4 memory-management r rcpp openxlsx

我的用户不能或不想与关系数据库连接,而是更喜欢使用导出到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文件.

Dyl*_*oss 5

你的问题不是记忆.openxlsx需要安装RTools或类似工具来保存更大的excel文件.

我昨天遇到了同样的问题和同样的错误.以下是Windows安装程序的链接:

https://cran.r-project.org/bin/windows/Rtools/index.html

以下网站进一步说明了要求:

https://www.r-project.org/nosvn/pandoc/openxlsx.html