使用purrr:map从当前工作目录中的列表写入xlsx文件
我正在尝试使用purrr::map从当前工作空间的列表中编写excel文件。我想使用每个列表的名称作为excel文件名(例如:name_1.xlsx,name_2.xlsx)。我如何让purrr:map来做这件事使用purrr:map从当前工作目录中的列表写入xlsx文件,r,purrr,writexl,R,Purrr,Writexl,我正在尝试使用purrr::map从当前工作空间的列表中编写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
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")
我认为您需要
map2
来提供l2
和名称(l2)
,以写入xlsx
。这里,.x
指的是l2
,.y
指的是名称(l2)
编辑:您还可以使用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")))
请具体说明哪些不起作用。我猜你应该在你的
中有
而不是l2
我认为使用iwalk
/imap
(为了方便起见)或walk2
/map2
和列表的名称可能是你需要的。为了节省一些输入,你也可以使用imap(l2,~write_xlsx(.x,path=paste0(.y,“.xlsx”))
这是map2(l2,names(l2),~write_xlsx(.x,path=paste0(.y,.xlsx”))的快捷方式。
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(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")))