列出R中与模式不匹配的文件

MER*_*ose 20 regex r

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

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

list.files(path="data", pattern="new_")
Run Code Online (Sandbox Code Playgroud)

结果[1] "new_File1.csv" "new_File2.csv".

但是如何反转搜索,即仅列出File1.csv和File2.csv?

mat*_*fee 24

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

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

grep(list.files(path="data"), pattern='new_', inv=T, value=T)
Run Code Online (Sandbox Code Playgroud)

所述grep(...)确实的模式匹配; inv=T反转比赛; value=T返回匹配的值(即文件名)而不是匹配的索引.


Gre*_*now 7

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