如何在 R 中一次从数据帧列表中写入多个 CSV?

How to Write Multiple CSV from List of Dataframe at once in R?

我有数千 .csv 个文件,其中包含以下信息:

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

我应该做的是:

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

到目前为止(也是通过本论坛的帮助),我使用此脚本列出了第 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 的第一个数据帧的信息。

我似乎无法将循环设置为 'call' 列表中的数据帧并创建顺序输出 .csv 名称。这个问题有什么建议吗?

谢谢。

尝试

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

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

我不确定您是否要在文件名中加上方括号。我会反对它。