! R中的grep - 查找不匹配的项目

时间:2015-01-22 10:08:53

标签: r

我想在数据框中找到与模式不匹配的行。

 Key = c(1,2,3,4,5)
 Code = c("X348","I605","B777","I609","F123")
 df1 <- data.frame(Key, Code)

我可以使用以下方式找到以I60开头的项目:

 df2 <- subset (df1, grepl("^I60", df1$Code))

但我希望能够找到所有其他行(即那些不以I60开头的行)。 invert参数不适用于grepl。 grep本身没有找到所有行,也不能将结果传递给subset命令。感谢帮助。

2 个答案:

答案 0 :(得分:13)

您可以使用[运算符并执行

df1[!grepl("I60", Code),]

(来自@Hugh的建议澄清:)另一种方式是

df1[!grepl("I60",df1$Code),]

以下是有关数组索引的参考手册,该手册使用[

完成

http://cran.r-project.org/doc/manuals/R-intro.html#Array-indexing

答案 1 :(得分:3)

另外,你可以试试这个:

 Key = c(1,2,3,4,5)
Code = c("X348","I605","B777","I609","F123")
df1 <- data.frame(Key, Code)
toRemove<-grep("^I60", df1$Code)
df2 <- df1[-toRemove,]