【问题标题】:List files in R that do NOT match a pattern列出 R 中不匹配模式的文件
【发布时间】:2015-10-13 22:58:51
【问题描述】:

R具有列出目录中文件的功能,即list.files()。它带有可选参数pattern= 以仅列出与模式匹配的文件。

目录data中的文件: File1.csv File2.csv new_File1.csv new_File2.csv

list.files(path="data", pattern="new_")

结果为@​​987654327@。

但是我怎样才能反转搜索,即只列出 File1.csvFile2.csv

【问题讨论】:

    标签: regex r


    【解决方案1】:

    我相信你必须自己做,因为list.files 不支持 Perl 正则表达式(所以你不能做像pattern=^(?!new_) 这样的事情)。

    即列出所有文件,然后使用grep 过滤它们:

    grep(list.files(path="data"), pattern='new_', invert=TRUE, value=TRUE)
    

    grep(...) 进行模式匹配; invert=TRUE 反转匹配; value=TRUE 返回匹配的值(即文件名)而不是匹配的索引。

    【讨论】:

      【解决方案2】:

      我认为最简单(如果包括程序员时间,可能是最快的)方法是运行list.files 2 次,一次列出所有文件,然后第二次使用您不想要的文件模式,然后使用setdiff 函数查找那些不在您要排除的组中的文件名。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-21
        • 2014-11-02
        • 2013-10-07
        • 2014-05-02
        • 2012-05-08
        • 2018-10-01
        • 1970-01-01
        相关资源
        最近更新 更多