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

从R中的目录列表创建文件列表,r,list,for-loop,R,List,For Loop,我有许多目录的列表,每个目录中有5个文件,我想从每个目录中的这些文件中选择一个(例如,让我们说一个扩展名为.txt的目录)并编译这些.txt文件的列表…我如何创建一个循环,从R中的目录列表中选择txt文件?您可以执行以下操作: dir(path = ".", pattern = "\\.txt$", full.names = TRUE, recursive = TRUE) 其中,path是包含要查找的所有文件夹的根,pattern是与感兴趣的文件匹配的正则表达式(在本例中,所有扩展名为.txt

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

您可以执行以下操作:

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

其中,
path
是包含要查找的所有文件夹的根,
pattern
是与感兴趣的文件匹配的正则表达式(在本例中,所有扩展名为
.txt
的文件,
full.names
返回文件的完整路径,
recursive
浏览
path
中的所有子订单。这将返回一个向量,其中包含与查询匹配的文件的完整路径。

如果
dirs
中有目录名列表, 您可以将所有文件中的
.txt
文件作为向量,其中包含:

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

files
list.files
已经是一个向量化函数,因此您可以将目录向量传递给它,无需循环

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

像这样使用
lappy
lappy(dirs,function(x)list.files(x,'.txt$',full.names=TRUE)
其中
dirs
是你的目录谢谢你sinQueso!谢谢你Nathan!
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))