如何遍历两个命名列表并将非同质数据写入单个 xlsx sheet?
How to loop through two named lists and write non-homogenous data to a single xlsx sheet?
假设我有两个这样的列表:
listA <- list(
df1 <- data.frame(
Group = c('A', 'B'),
Value = c(12, 10)
),
df2 <- data.frame(
Group = c('A', 'B', 'C'),
Value = c(9, 8, 10)
)
)
listB <- list(
df1 <- data.frame(
State = c('CA', 'WI', 'IA'),
Value = c(13, 16, 5),
Index = c(0.1, 0.11, 0.3)
),
df2 <- data.frame(
State= c('D', 'E', 'F'),
Value = c(77, 83, 16)
)
)
我想遍历这些,最好使用 purrr
,将相应的数据帧粘贴到每个共享列表名称的单个 xlsx
sheet 中。因此 listA
中的 df1
和 listB
中的 df1
将像下面这样在名为 df1
的选项卡中合并,与 df2
的想法相同在单独的选项卡中:
这个过程将针对每个数据帧名称(df1
、df2
等)重复一次。有没有办法使用 openxlsx
和 purrr
来实现这一点?
假设您的列表元素实际上已命名,您可以使用 for
循环:
library(openxlsx)
wb <- createWorkbook()
for (name in names(listA)) {
addWorksheet(wb, sheetName = name)
writeData(wb, sheet = name, listA[[name]])
writeData(wb, sheet = name, listB[[name]], startRow = nrow(listA[[name]]) + 3)
}
saveWorkbook(wb, "test_file.xlsx")
假设我有两个这样的列表:
listA <- list(
df1 <- data.frame(
Group = c('A', 'B'),
Value = c(12, 10)
),
df2 <- data.frame(
Group = c('A', 'B', 'C'),
Value = c(9, 8, 10)
)
)
listB <- list(
df1 <- data.frame(
State = c('CA', 'WI', 'IA'),
Value = c(13, 16, 5),
Index = c(0.1, 0.11, 0.3)
),
df2 <- data.frame(
State= c('D', 'E', 'F'),
Value = c(77, 83, 16)
)
)
我想遍历这些,最好使用 purrr
,将相应的数据帧粘贴到每个共享列表名称的单个 xlsx
sheet 中。因此 listA
中的 df1
和 listB
中的 df1
将像下面这样在名为 df1
的选项卡中合并,与 df2
的想法相同在单独的选项卡中:
这个过程将针对每个数据帧名称(df1
、df2
等)重复一次。有没有办法使用 openxlsx
和 purrr
来实现这一点?
假设您的列表元素实际上已命名,您可以使用 for
循环:
library(openxlsx)
wb <- createWorkbook()
for (name in names(listA)) {
addWorksheet(wb, sheetName = name)
writeData(wb, sheet = name, listA[[name]])
writeData(wb, sheet = name, listB[[name]], startRow = nrow(listA[[name]]) + 3)
}
saveWorkbook(wb, "test_file.xlsx")