列出R中与模式

时间:2015-07-23 14:45:04

标签: regex r

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.csvFile2.csv

2 个答案:

答案 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函数查找那些不在要排除的组中的文件名。