【发布时间】:2020-10-15 20:13:07
【问题描述】:
如果已经在其他地方问过这个问题,请提前道歉,但我尝试了不同的尝试,但到目前为止没有任何效果。
我有一个包含 26 个数据帧 (DF) 的列表(名为 Results)。我使用带有匿名函数的writexl 和lapply 将每个DF 导出到26 个Excel 文件中:
> 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 文件,每个文件都有不同的工作表。
在导出到 Excel 之前,我可以拆分 26 个 DF Results(见下文)的列表。但在这种情况下,我不知道如何在导出过程中重新组合,以便保留 26 个 Excel 文件,每个文件包含几张
Results_Locality <- split(Results,list(Results$Locality), drop=TRUE)
所以我想知道是否可以使用 lapply 添加另一个函数以将 Results 拆分为“本地化”列,以便将每个 DF 导出到具有不同工作表的 Excel 文件中(sheet1 = DF1 中的 Localization1 , sheet2 = DF1 中的本地化 2, ...) ?
否则是否可以创建一个循环来将每个 DF 中的每个本地化的数据导出到同一张表中?
【问题讨论】:
-
看看
data.table::split().. 它可以按列值拆分数据表,并输出到可以循环使用的列表。 -
我不太明白。 R 给我一个错误:
Error: 'split' is not an exported object from 'namespace:data.table' -
对不起... data.table 带有它自己的拆分方法,但它不是一个单独的函数,您可以在 data.table... split.data 上调用“split”。然后将调用 table。