我有一个数据框列表,我想保存到独立的.csv文件。
目前,每个数据框都有一个新行:
write.csv(lst$df1, "C:/Users/.../df1")
write.csv(lst$df2, "C:/Users/.../df2")
ad nauseam
显然,这并不理想:名称的改变意味着要经历每一个案例并进行更新。我考虑使用像
这样的东西lapply(lst, f(x) write.csv(x, "C:/Users/.../x")
但这显然不会奏效。如何将列表中的每个数据框保存为单独的.csv文件?
答案 0 :(得分:3)
你可以这样做:
N <- names(lst)
for (i in seq_along(N)) write.csv(lst[[i]], file=paste0("C:/Users/.../"), N[i], ".csv")
根据Heroka的评论更短版本:
for (df in names(lst)) write.csv(lst[[df]], file=paste0("C:/Users/.../"), df, ".csv")
或
lapply(names(lst), function(df) write.csv(lst[[df]], file=paste0("C:/Users/.../"), df, ".csv") )
答案 1 :(得分:2)
mapply
函数及其Map
包装器是lapply
的多参数版本。你有data.frame
的清单;你需要建立一个文件名向量。像这样:
filenames<-paste0("C:/Users/.../",names(lst), ".csv")
Map(write.csv,lst,filenames)
Map
的作用是什么?它多次调用作为第一个参数提供的函数,并且在每次迭代中,它的参数取自提供的其他参数的元素。有点像:
list(write.csv(lst[[1]],filenames[[1]]),write.csv(lst[[2]],filenames[[2]]),...)