2017-06-06 37 views
0

我有成千上万.csv文件,这包括以下信息:如何在R中一次从Dataframe列表中写入多个CSV?

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

我应该做的是:

  1. 查找到的最大HS每年对每个文件
  2. 写几千分开.csv文件,这举行点1的信息

到目前为止(也在这个论坛的帮助),我有一个李圣上千点1 dataframes这个脚本:

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名称。有没有对这个问题的建议?

谢谢。

回答

2

尝试

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

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

我不知道你是否愿意广场的文件名括号。我会建议反对它。

+0

它的工作原理!非常感谢〜 不,我不想要方括号。这只是我的失败尝试获得顺序输出文件的名字哈哈。 – Yosinta

+0

如果能解决您的问题,建议您点击复选标记以接受答案 –