r - 导出包含多个工作表的多个 Excel 文件中的数据框列表
问题描述
如果已经在其他地方问过这个问题,请提前道歉,但我尝试了不同的尝试,但到目前为止没有任何效果。
我有一个Results
包含 26 个数据帧 (DF) 的列表(名为 )。我使用匿名函数将每个 DF 导出到 26 个 Excel 文件中writexl
:lapply
> head(Results)
$Paris.Aquatic_moss
Sample_type Locality Chemicals mean_Mesure max_Mesure min_Mesure
1 Aquatic_moss Paris AG-110m NA NA NA
2 Aquatic_moss Paris BE-7 123.275 177.0 52.60
3 Aquatic_moss Paris NH3 NA NA NA
4 Aquatic_moss Paris CO ... ... ...
5 Aquatic_moss London AG-110m NA NA NA
6 Aquatic_moss London BE-7 ... ... ...
7 Aquatic_moss London NH3 ... ... ...
8 Aquatic_moss London CO ... ... ...
library(writexl)
lapply(names(Results),
function (x) write_xlsx(Results[[x]], path=paste(x, "2019.xlsx", sep="_")))
我获得了 26 个名为“nameoftheDF1_2019”、“nameoftheDF2_2019”的 Excel 文件……每个 Excel 都有一个名为“Sheet1”的工作表。但是每个 Excel 都是巨大的。我意识到每个 DF 本身都由名为“Locality”的列拆分并生成 26 个 Excel 文件,每个文件都有不同的工作表,这会容易得多。
Results
在导出到 Excel 之前,我可以拆分 26 个 DF 的列表(见下文)。但在这种情况下,我不知道如何在导出过程中重新组合,以便我保留 26 个 Excel 文件,每个文件包含几张
Results_Locality <- split(Results,list(Results$Locality), drop=TRUE)
所以我想知道是否可以添加lapply
另一个函数以Results
按“本地化”列拆分,以便将每个 DF 导出到具有不同工作表的 Excel 文件中(sheet1 = DF1 中的 Localization1,sheet2 = DF1 中的 Localization 2,. ..) ? 否则是否可以创建一个循环来导出同一张表中每个 DF 中每个本地化的数据?
解决方案
这可以通过拆分 df 并将拆分后的 df 传递给writexl::write_xlsx
. 默认情况下write_xlsx
会将列表的元素放在不同的工作表中:
library(writexl)
xlexport <- function(x, var = "Locality") {
d <- split(Results[[x]], Results[[x]][[var]])
writexl::write_xlsx(d, path = paste(x, "2019.xlsx", sep = "_"))
}
Results <- list(iris1 = iris, iris2 = iris)
lapply(names(Results), xlexport, var = "Species")
推荐阅读
- java - 使用 XML 配置进行 DAO 调用的 Spring 重试
- html - 孩子的背景颜色覆盖了父母的背景图片
- sql - 我需要计算每件商品的日销售额、MTD 和 YTD 销售额
- android - Play 商店 - 个人资料已注册 Beta 测试,但应用页面未显示“Beta 测试员”
- lua - dzVents - 保存“颜色”对象并重复使用
- flutter - Flutter:当应用程序处于前台时,FCM 通知不起作用
- java - Lucene 拆分包:模块从“lucene.analyzers.common”和“lucene.core”中读取包“org.apache.lucene.analysis.standard”
- c - 在 C 函数内部更改 __stack_chk_guard 是否合法?
- php - 如何在 Laravel 中显示模型关系?
- python - 使用带有 html.fromstring 的 xpath 时获取空列表