Как я могу написать именованный список в файлы (с именами списков) с purrr - PullRequest
1 голос
/ 19 июня 2019

Каждый (именованный) элемент моего списка является символьной строкой.Как я могу написать эти строки для строк с purrr?

Для одного элемента я использую этот код:

cat(list[[1]], file = paste0(names(list)[1], ".txt"))

или

cat(list[[1]], file = names(list)[1]))

, если я назову списокнепосредственно с расширением.

Я ожидаю, что все файлы будут записаны одновременно.

Ответы [ 2 ]

2 голосов
/ 19 июня 2019

Мы можем использовать iwalk

library(purrr)
iwalk(lst, ~ cat(.x, paste0(.y, ".txt")))

Или используя base R

lapply(names(lst), function(nm) cat(lst[[nm]], paste0(nm, ".txt")))
2 голосов
/ 19 июня 2019

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))
...