删除 R 中包含特定字符串的行

我想排除包含字符串“ REVERSE”的行,但是我的行与单词不完全匹配,只包含它。

我的输入数据框:

   Value   Name
55     REVERSE223
22     GENJJS
33     REVERSE456
44     GENJKI

我的预期产出:

   Value   Name
22     GENJJS
44     GENJKI
214145 次浏览

这应该会奏效:

df[- grep("REVERSE", df$Name),]

或者更安全的版本是:

df[!grepl("REVERSE", df$Name),]

可以使用 stringi包中的 stri _ check _ fix 函数

stri_detect_fixed(c("REVERSE223","GENJJS"),"REVERSE")
[1]  TRUE FALSE

实际上,我会用:

df[ grep("REVERSE", df$Name, invert = TRUE) , ]

如果所需的搜索词不包含在任何行中,这将避免删除所有记录。

你可以使用 dplyr::filter()和否定 grepl()匹配:

library(dplyr)


df %>%
filter(!grepl('REVERSE', Name))

或者用 dplyr::filter()否定 stringr::str_detect()匹配:

library(stringr)


df %>%
filter(!str_detect(Name, 'REVERSE'))

您可以使用前面提供的代码在同一个 datafram (df)中使用它

df[!grepl("REVERSE", df$Name),]

或者,您可以使用这段代码为 datafram 分配一个不同的名称

df1<-df[!grepl("REVERSE", df$Name),]

如果是多个字符串,则可以使用此函数 df[!grepl("REVERSE|GENJJS", df$Name),]

一个建立在 BobD59和隐藏层回答上的迟回答。

这将删除多个特定字符串,同时避免在所需的搜索词不包含在任何行中的情况下删除所有记录。

df1 <-
df[!grepl("REVERSE|GENJJS", df$Name), (invert = TRUE), ]