2017-06-06 86 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

如果能解決您的問題,建議您點擊複選標記以接受答案 –