列出文件 - 排除文件夹

18

我想使用 R 的 list.files 函数在文件夹及其子文件夹中查找所有文本文件。但是,我希望排除一个子文件夹中的所有文件,比方说它包含未完成的工作,这些工作还不适合我用其他文件做的事情。文件夹的结构如下:


- folder
 |- subfolder_1_good_stuff
 |- subfolder_2_good_stuff
 |- subfolder_3_good_stuff
 |- subfolder_4_unfinished_stuff

所以,“文件夹”就是我的工作目录。

现在,我会使用:

list.files(path=".", pattern=".txt", recursive=TRUE)

我应该在“路径”表达式中添加什么内容,以排除未完成工作的文件夹。 如果这个文件夹的名称不会出现在任何文件名中,那是否有所不同。

2个回答

13

使用正则表达式函数 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) ]

7

在 @zx8754 的回答基础上,通过使用 %>% 实现了更精简的 tidyverse 方法:

library(tidyverse)

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接