【问题标题】:How to Write Multiple CSV from List of Dataframe at once in R?如何在 R 中一次从数据框列表中写入多个 CSV?
【发布时间】:2017-11-07 21:41:43
【问题描述】:

我有数千个包含这些信息的.csv 文件:

Year  HS
1956  1.098
1956  1.785
1956  0.987
....
2012  1.341

我应该做的是:

  1. 找到每个文件每年的最大 HS
  2. 编写数千个单独的 .csv 文件,其中包含第 1 点的信息

到目前为止(也通过这个论坛的帮助),我有一个包含第 1 点的数千个数据帧的列表:

    temp <- Sys.glob("*.csv")
ag <- lapply(temp, function(f) 
  aggregate(HS ~ Year, read.table(f, header = TRUE, sep = ";"), max))

列表如下所示:

[[1]]
   Year    HS
1  1956 2.172
2  1957 1.831
3  1958 1.713
.....
56  2011 2.332
57  2012 2.917

[[2]]
   Year    HS
1  1956 2.111
2  1957 1.864
3  1958 1.135
.....
56  2011 1.032
57  2012 2.341
.....
until thousands dataframes

我正在尝试通过应用这些脚本从这些列表中写入.csv 文件:

    temp <- Sys.glob("*.csv")
ag <- lapply(temp, function(f) 
  aggregate(HS ~ Year, read.table(f, header = TRUE, sep = ";"), max))
for(i in 1:length(ag)){
  write.csv(ag[i],file="out[i].csv")
}

但它只创建out[i].csv,其中包含ag的第一个数据帧的信息

我也在尝试这个脚本:

temp <- Sys.glob("*.csv")
ag <- lapply(temp, function(f) 
  aggregate(HS ~ Year, read.table(f, header = TRUE, sep = ";"), max))
lapply(ag, function(a) 
  write.csv(a, file="out[a].csv"))

同样,它只创建out[a].csv,其中包含ag 的第一个数据帧的信息。

似乎我未能将循环设置为“调用”列表中的数据帧并创建顺序输出.csv 名称。对这个问题有什么建议吗?

谢谢。

【问题讨论】:

    标签: r loops csv dataframe datalist


    【解决方案1】:

    试试

    write.csv(ag[i],file=sprintf("out%d.csv",i))
    

    write.csv(ag[i],file=paste0("out",i,".csv"))
    

    我不确定您是否想在文件名中加上方括号。我建议不要这样做。

    【讨论】:

    • 有效!非常感谢~不,我不要方括号。只是我尝试获取顺序输出文件的名称失败,哈哈。
    • 如果它解决了您的问题,我们鼓励您单击复选标记以接受答案
    猜你喜欢
    • 1970-01-01
    • 2015-01-15
    • 2020-09-04
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多