【问题标题】:list.files - exclude folderlist.files - 排除文件夹
【发布时间】:2014-08-22 16:04:55
【问题描述】:

我想使用 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)

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

【问题讨论】:

    标签: r regex


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      基于@zx8754 的答案,只需使用tidyverse 方法使用%&gt;%

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-11
        • 2013-08-03
        • 2017-10-12
        • 2013-07-17
        • 2014-12-09
        • 1970-01-01
        • 1970-01-01
        • 2014-01-26
        相关资源
        最近更新 更多