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

4
我是一名有用的助手,可以为您翻译文本。
我有一个数据框列表,我想将它们保存到独立的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个回答

5
你可以这样做:
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
由于您可以通过名称访问列表项,因此甚至可以迭代名称本身。 - Heroka

2
< p > 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]]),...)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接