2013-02-27 151 views
1

我有一個文件夾(my_files),裏面有大約1000個文件夾。這1000個文件夾中的每一個都有6個csv文件。我想通過彙總這6個csv的每個目錄來獲得1000個csv文件。遍歷文件夾層次結構

我有以下代碼:

files<-list.files("/Users/me/Desktop/my_files") 
for (i in files) 
{ 
     //open each directory in "files" 
     //aggregate all csvs in the directory into one 
     //name of the aggregated csvs should be the name of the folder they were inside of 
} 

我嘗試使用類似:

for (i in files) 
{ 
    files2<-list.files("/Users/me/Desktop/my_files/"i) 
} 

要列出my_files目錄中的文件,但顯然這是錯誤的語法。

+0

如果你只想得到結果的CSV文件,那麼Bash可能是比R更好的工具。 – 2013-02-27 13:20:25

+0

我想將不同目錄中的所有csv文件合併爲一個。例如。文件夾my_files/xxx有6個csv文件,我想最終將一個xxx.csv文件放在一起,即所有6個csv文件。我可以在R中一個接一個地做這件事,但對於這麼多目錄來說這太多了。我對bash瞭解不多,你認爲我應該在谷歌上做些什麼?是否有任何特定的命令會有幫助? – d12n 2013-02-27 13:23:13

+0

BASH是標準的Linux命令外殼。 – Dinre 2013-02-27 13:24:13

回答

1

我創建了一個名爲my_files的文件夾,並使用folder1,folder2folder3填充它。每個文件夾都包含一個帶有隱藏消息的file1.txt。讓我們看看這些消息讀取的內容。匿名函數可以適用於讀入所有文件並將它們組合在一起。我會讓你去完成任務。

# I've created a folder "my_files" that is... 
setwd("q:/my_files") 

# populated by three subfolders 
thousand.folders <- list.dirs(full.names = TRUE) 

result <- sapply(thousand.folders[-1], function(x) { 
    file <- list.files(x, full.names = TRUE) 
    message(readLines(file)) 
}) 

file1 in folder1 
file1 in folder2 
file1 in folder3 
+0

我仍然不確定如何使這項工作...我的結果如下所示:$'。/ 9980072' [1]「./9980072/data_B_2012_08.csv」「./9980072/data_B_2012_09.csv」「。 /9980072/data_B_2012_10.csv「」./9980072/data_B_2012_11.csv「 [5]」./9980072/data_B_2012_12.csv「」./9980072/data_B_2013_01.csv「所以,我有my_files中的目錄,它是/ 9980072,在那裏我有csv文件,我想合併這些csv文件並將這些合併的csv文件命名爲目錄的名稱,在本例中爲9980072.csv – d12n 2013-02-27 14:46:57