我有一个命名的数据帧列表,想把每个数据帧写成CSV,用数据帧名作为文件名。我如何修改我的函数来做到这一点?下面的函数给了我整个数据框的文件名,而不是数据框的名字。
a <- data.frame('col1' = c(1,2,3))
b <- data.frame('col1' = c(3,4,5))
mylist <- list(a,b)
names(mylist) <- c('a', 'b')
lapply(mylist, function(x) write.csv(x, file = paste0(x, '.csv')))
用基础R可以做到。
lapply(names(mylist), function(x) {write.csv(mylist[[x]], file = paste0(x, ".csv"))})
或者你可以使用tidyverse库中的快捷命令iwalk purrr。
iwalk(mylist, function(x, y) {write.csv(x, file = paste0(y, ".csv"))})
## Or this alternative syntax.
iwalk(mylist, ~write.csv(.x, file = paste0(.y, ".csv")))