将列表中的所有数据帧保存为单独的.csv文件

时间:2016-01-11 13:51:42

标签: r list dataframe export-to-csv

我有一个数据框列表,我想保存到独立的.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文件?

2 个答案:

答案 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]]),...)