从R中的目录列表创建文件列表

时间:2017-08-08 19:28:06

标签: r list for-loop

我有一个包含许多目录的列表,每个目录中都有5个文件,从我想要选择的每个目录中的这些文件中(例如,让我们说扩展名为.txt的目录)并编译这些目录的列表。 txt文件....如何创建一个循环,从R?

中的目录列表中选择txt文件

3 个答案:

答案 0 :(得分:4)

你可以这样做:

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

其中path是包含您要查找的所有文件夹的根,pattern是与您感兴趣的文件匹配的正则表达式(在示例中所有文件都带有{{ 1}}扩展名,.txt返回文件的完整路径,full.names来探索recursive中的所有子编码器。这会返回一个向量,其中包含与您匹配的文件的完整路径查询。

答案 1 :(得分:1)

如果您在dirs中有目录名称列表, 您可以将.txt个文件作为矢量获取所有文件:

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

你可以使用你想要的循环实现相同的效果, 但它不那么优雅,我不推荐它:

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

答案 2 :(得分: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))