列表中的每个(命名)元素都是一个字符串。如何用purrr在那些字符串上写这些字符串?
对于单个元素,我使用以下代码:
cat(list[[1]], file = paste0(names(list)[1], ".txt"))
或
cat(list[[1]], file = names(list)[1]))
如果我直接用扩展名命名列表。
我希望一次写入所有文件。
答案 0 :(得分:2)
imap
是为此而构建的。
purrr::imap(lst, ~cat(.x, file = paste0(.y, ".txt")))
来自?imap
是map2(x,names(x))的简写
所以你也可以做
purrr::map2(lst, names(lst), ~cat(.x, file = paste0(.y, ".txt")))
或在基数R
中mapply(function(x, y) cat(x, file = paste0(y, ".txt")), lst, names(lst))
答案 1 :(得分:2)
我们可以使用iwalk
library(purrr)
iwalk(lst, ~ cat(.x, paste0(.y, ".txt")))
或使用base R
lapply(names(lst), function(nm) cat(lst[[nm]], paste0(nm, ".txt")))