【问题标题】:Save all data frames in list to separate .csv files将列表中的所有数据框保存到单独的 .csv 文件中
【发布时间】:2016-04-15 20:38:58
【问题描述】:

我有一个要保存到独立 .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 文件?

【问题讨论】:

    标签: r list dataframe export-to-csv


    【解决方案1】:

    你可以这样做:

    N <- names(lst)
    for (i in seq_along(N)) write.csv(lst[[i]], file=paste0("C:/Users/.../"), N[i], ".csv")
    

    在 Herka 的评论之后,一个更短的版本:

    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") )
    

    【讨论】:

    • 由于您还可以按名称访问列表项,您甚至可以遍历名称本身。
    【解决方案2】:

    mapply 函数及其Map 包装器是lapply 的多参数版本。您有data.frames 的列表;您需要构建一个文件名向量。像这样:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-19
      • 2018-06-09
      • 1970-01-01
      • 2023-02-09
      • 2018-11-22
      • 1970-01-01
      • 2021-09-23
      • 2022-01-18
      相关资源
      最近更新 更多