我想在数据框中找到与模式不匹配的行。
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命令。感谢帮助。
答案 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,]