如何在 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
我应该做的是:
- 找到每个文件每年的最大 HS
- 写入数千个单独的
.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
的第一个数据帧的信息。
我似乎无法将循环设置为 'call' 列表中的数据帧并创建顺序输出 .csv
名称。这个问题有什么建议吗?
谢谢。
尝试
write.csv(ag[i],file=sprintf("out%d.csv",i))
或
write.csv(ag[i],file=paste0("out",i,".csv"))
我不确定您是否要在文件名中加上方括号。我会反对它。
我有数千 .csv
个文件,其中包含以下信息:
Year HS
1956 1.098
1956 1.785
1956 0.987
....
2012 1.341
我应该做的是:
- 找到每个文件每年的最大 HS
- 写入数千个单独的
.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
的第一个数据帧的信息。
我似乎无法将循环设置为 'call' 列表中的数据帧并创建顺序输出 .csv
名称。这个问题有什么建议吗?
谢谢。
尝试
write.csv(ag[i],file=sprintf("out%d.csv",i))
或
write.csv(ag[i],file=paste0("out",i,".csv"))
我不确定您是否要在文件名中加上方括号。我会反对它。