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返回匹配的值(即文件名)而不是匹配的索引.
我认为最简单的(如果包括程序员时间可能最快)方法是运行list.files2次,一次列出所有文件,然后第二次使用你不想要的文件模式,然后使用该setdiff函数查找那些不在您要排除的组中的文件名.