MASS::write.matrix
хорошо, если вы просто хотите значения, а не имена строк или столбцов. Вы можете перебирать свой список с помощью lapply
, или, поскольку вам нужно перебирать и объекты, и имена, его многовариантная версия Map
:
set.seed(47)
mylist <- list(
specimen1 = array(runif(3^2), dim=c(3,3)),
specimen2 = array(runif(3^2), dim=c(3,3)),
specimen3 = array(runif(3^2), dim=c(3,3))
)
Map(
function(obj, name) MASS::write.matrix(obj, name, sep = ","),
mylist,
paste0(names(mylist), "_land.csv")
)
purrr::imap
- это сокращенная версия, которая автоматически перебирает как элементы .x
, так и имена .y
. iwalk
- это версия той же функции, которая не производит никакого вывода (которая в любом случае бесполезна, поскольку вы вызываете анонимную функцию для побочных эффектов).
library(purrr)
mylist %>% iwalk(~MASS::write.matrix(.x, paste0(.y, "_land.csv"), sep = ","))
Оба делают одно и то же.