2017-08-08 71 views
1

我想從中選擇一個目錄中的這些文件,其中每個目錄都有5個文件的列表(例如,讓我們說一個目錄擴展名爲.txt)並編譯這些.txt文件的列表....我如何創建一個從R中的目錄列表中選擇txt文件的循環?從R中的目錄列表創建文件列表

+0

使用'lapply'這樣的:'lapply(迪爾斯,函數(X)list.files(X,'TXT。 $',full.names = TRUE)'dirs'是您的目錄列表 – Val

回答

4

你可以這樣做:

dir(path = ".", pattern = "\\.txt$", full.names = TRUE, recursive = TRUE) 

哪裏path是包含所有你想要查找的文件夾的根,pattern是匹配你所感興趣的文件(在本例中的所有文件的正則表達式與.txt擴展,如果你有列表full.names返回文件的完整路徑,recursive探索path所有subfoders。這將返回與匹配您的查詢的文件的完整路徑的向量。

+0

謝謝sinQueso! – extracurricular

1

dirs, 你可以得到.txt文件中所有的人都與向量的目錄名稱:

files <- unlist(lapply(dirs, function(dir) list.files(path = dir, pattern = '\\.txt$'))) 

您可以使用一個循環,你問達到同樣的, 但它是那麼優雅,而且我不「T推薦一下:

files <- c() 
for (dir in dirs) { 
    files <- c(files, list.files(path = dir, pattern = '\\.txt$')) 
} 
+0

謝謝Janos! – extracurricular

1

list.files已經是一個矢量化功能,讓你可以通過目錄給它的載體,沒有循環需要。

my_dirs <- c("foo/bar", "foo/baz") 
all_text_files <- list.files(my_dirs, pattern = "\\.txt$", full.names = TRUE) 

如果你想有一個列表由目錄分隔文件...

split(all_text_files, dirname(all_text_files)) 
+0

謝謝Nathan! – extracurricular