使用 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
提供 l2
和 names(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"
编辑:您还可以使用 walk2
、pmap
& 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")))
我正在尝试使用 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
提供 l2
和 names(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"
编辑:您还可以使用 walk2
、pmap
& 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")))