! grep in R-查找不匹配的项

! grep in R-查找不匹配的项,r,R,我想在数据框中查找与模式不匹配的行 Key = c(1,2,3,4,5) Code = c("X348","I605","B777","I609","F123") df1 <- data.frame(Key, Code) Key=c(1,2,3,4,5) 代码=c(“X348”、“I605”、“B777”、“I609”、“F123”) df1此外,您可以尝试以下方法: Key = c(1,2,3,4,5) Code = c("X348","I605","B777","I609",

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

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

df1此外,您可以尝试以下方法:

 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,]
Key=c(1,2,3,4,5)
代码=c(“X348”、“I605”、“B777”、“I609”、“F123”)

df1您可以使用
[
操作符

df1[!grepl("I60", Code),]
(建议@Hugh:)另一种方式是

df1[!grepl("I60",df1$Code),]
这是关于数组索引的参考手册,它是通过
[
完成的:


子集(df1,!grepl(^I60),code))
不确定您认为
grep
不起作用的意思。
df1[grep(^I60),df1$code,invert=TRUE),]
df1[-grep(^I60,df1$code),]
似乎效果不错。我也不明白为什么会有人使用
子集
。它总是提醒我,出于某种原因,人们不得不使用
plyr
。公平点,只是(不好)习惯,但我是R新手。谢谢你的评论,谢谢。投票赞成在那里使用“invert”—出于某种原因,我在使用grep.Neat时没有使用这个标志。在与管道结合排除多个对象时也能很好地工作。例如df1[grep(^I60 | ^F123),df1$Code,invert=TRUE,]JFY,使用which(grepl)
与仅使用
grep
相同此答案给出了正确答案,但不应接受,因为它不必要地复杂。+1尽管注意
,但code
仅在创建变量独立于数据帧时才有效。(如果
code
不是环境中的一个对象,而只是一个列名,那么该代码将不起作用——尽管只需要一个微小的修改。)就像@Hugh说的,这对真实的数据集不起作用,更不用说这里的两个答案早就在评论中提供了。是的,谢谢你的简化。我必须更多地使用[operator!
df1[!grepl("I60",df1$Code),]