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