使用 purrr:map 从当前工作目录中的列表写入 xlsx 文件

Write xlsx files from list in current working directory with purrr:map

我正在尝试使用 purrr::map 从我当前工作的 R space 中的列表中写入 excel 个文件。我想使用每个列表的名称作为 excel 文件名(例如:name_1.xlsx、name_2.xlsx)。我如何让 purrr:map 做到这一点?

library(tidyverse)
library(writexl)

l2 <- list(
  tibble(x = 1:5, y = 1, z = x ^ 2 + y),
  tibble(x = 2:6, y = 3, z = x ^ 2 + y)
  )

names(l2) <- c("name_1", "name_2")

我已经尝试过这两种解决方案,但它们都无法正常工作。

map(l2, write_xlsx, str_c(names(l2), ".xlsx"))

map(l2, ~write_xlsx(l2, path = str_c(names(l2), ".xlsx")))

我认为您需要 map2 来向 write_xlsx 提供 l2names(l2)。这里.x指的是l2.y指的是names(l2)

map2(l2, names(l2), ~ write_xlsx(.x, path = str_c(.y, ".xlsx")))

$`name_1`
[1] "name_1.xlsx"

$name_2
[1] "name_2.xlsx"

编辑:您还可以使用 walk2pmap & pwalk

walk2(l2, names(l2), ~ write_xlsx(.x, path = str_c(.y, ".xlsx")))

# ..1 refers to l2 & ..2 refers to names(l2)
pmap(list(l2, names(l2)), ~ write_xlsx(..1, path = str_c(..2, ".xlsx")))

pwalk(list(l2, names(l2)), ~ write_xlsx(..1, path = str_c(..2, ".xlsx")))