R
具有列出目录中文件的功能,即list.files()
。它附带可选参数pattern=
,仅列出与模式匹配的文件。
目录data
中的文件:
File1.csv File2.csv new_File1.csv new_File2.csv
list.files(path="data", pattern="new_")
结果为[1] "new_File1.csv" "new_File2.csv"
。
但是如何反转搜索,即仅列出File1.csv
和File2.csv
?
答案 0 :(得分:19)
我相信你必须自己做,因为list.files
不支持Perl正则表达式(所以你不能做pattern=^(?!new_)
之类的事情。)
即。列出所有文件,然后使用grep
过滤它们:
grep(list.files(path="data"), pattern='new_', inv=T, value=T)
grep(...)
进行模式匹配; inv=T
反转比赛; value=T
返回匹配值(即文件名),而不是匹配的索引。
答案 1 :(得分:7)
我认为最简单的(如果你包括程序员时间可能最快)方法是运行list.files
2次,一次列出所有文件,然后第二次使用你没有的文件模式想要,然后使用setdiff
函数查找那些不在要排除的组中的文件名。