如何遍历两个命名列表并将非同质数据写入单个 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 中的 df1listB 中的 df1 将像下面这样在名为 df1 的选项卡中合并,与 df2 的想法相同在单独的选项卡中:

这个过程将针对每个数据帧名称(df1df2 等)重复一次。有没有办法使用 openxlsxpurrr 来实现这一点?

假设您的列表元素实际上已命名,您可以使用 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")