list.files - 排除文件夹

nik*_*nen 12 regex r

我想使用R的list.files函数来查找文件夹及其子文件夹中的所有文本文件.但是,我想排除一个子文件夹中的所有文件,假设它包含未完成的工作,而这些工作还没有为我使用其他文件的内容做好准备.结构是这样的:

- folder
 |- subfolder_1_good_stuff
 |- subfolder_2_good_stuff
 |- subfolder_3_good_stuff
 |- subfolder_4_unfinished_stuff
Run Code Online (Sandbox Code Playgroud)

所以"文件夹"将是我的工作目录.

我现在用:

list.files(path=".", pattern=".txt", recursive=TRUE)
Run Code Online (Sandbox Code Playgroud)

但是我应该添加到"路径"表达式以排除具有未完成内容的文件夹.此文件夹名称不会出现在任何文件名中,如果这有所不同.

zx8*_*754 10

使用正则表达式 - grepl排除:

# find all ".txt" files
myfiles <- list.files(path = ".", pattern = ".txt",
                      full.names = TRUE, recursive = TRUE)

# exclude unfinished stuff
myfilesfinished <- myfiles[ !grepl("unfinished_stuff", myfiles) ]
Run Code Online (Sandbox Code Playgroud)


Emm*_*man 7

基于@zx8754的答案,只需tidyverse使用以下方法%>%

library(tidyverse)

list.files(path=".", pattern=".txt", full.names = TRUE, recursive=TRUE) %>%
   stringr::str_subset(., "unfinished_stuff", negate = TRUE)
Run Code Online (Sandbox Code Playgroud)