5

我有一个 174603 行和 178 列的数据框,我正在使用 openxlsx::saveWorkbook 将其导入 Excel,(使用此包获取上述单元格格式,包括颜色、标题样式等)。但是这个过程非常慢,(取决于机器使用的内存量,它可能需要 7 到 17 分钟!!)我需要一种方法来显着减少这种情况(不需要几秒钟,但是下面的任何东西5分钟就可以了)

我已经搜索过其他问题,但它们似乎都专注于导出到 R(我对此没有问题)或将非格式化文件写入 R(使用 write.csv 和其他类似选项)

显然我不能使用 xlsx 包,因为我的电脑上的设置(工业电脑,检查这个问题的评论)

任何有关此包中的包或其他功能的建议,以使其运行更快,我们将不胜感激。

4

2 回答 2

3

这个问题有一段时间,但我和你有同样的问题,并想出了一个值得一提的解决方案。有一个名为writexl的包实现了一种使用Clibxlsxwriter将数据框导出到 Excel 的方法。您可以使用以下代码导出到 excel:

library(writexl)
writexl::write_xlsx(df, "Excel.xlsx",format_headers = TRUE)

参数format_headers仅适用于中心和粗体标题,但我在ropensci制作的github writexl库中编辑了其源代码的C代码。您可以下载或克隆它。在src文件夹中,您可以编辑write_xlsx.c文件。

例如在他插入标题格式的部分

//如何格式化标题(粗体+中心)

lxw_format * 标题 = workbook_add_format(workbook);

格式设置粗体(标题);

格式设置对齐(标题,LXW_ALIGN_CENTER);

您可以添加此行以将背景颜色添加到标题

format_set_pattern(标题,LXW_PATTERN_SOLID);

format_set_bg_color(标题,0x8DC4E4);

您可以在libxlsxwriter库中搜索很多格式

当您完成编辑该文件并在名为writexl的文件夹中拥有源代码时,您可以通过以下方式构建和安装编辑后的包

shell("R CMD build writexl")
install.packages("writexl_1.2.tar.gz", repos = NULL)

使用第一块代码再次导出将生成具有格式的 Excel,并且比我知道的任何其他库都快。

希望这可以帮助。

于 2020-01-29T23:05:50.527 回答
-1

你有没有尝试过 ;

write.table(GroupsAlldata, file = 'Groupsalldata.txt')

为了以txt格式获取它。
然后在 Excel 上,您可以简单地将您的“文本到列”传输到表格中,祝您好运

于 2019-07-18T07:11:23.773 回答