2017-08-08 81 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