删除 R 中 grepl 模式匹配周围的行

Removing rows surrounding a grepl pattern match in R

我想从 R 中的数据框中删除包含特定字符串的行(我可以使用 grepl 执行此操作),以及每个模式匹配正下方的行。使用 grepl:

删除具有匹配模式的行似乎很简单
df[!grepl("my_string",df$V1),]

我坚持的部分是如何删除包含与上述示例中 "my_string" 匹配的模式的行下方的行。

感谢大家的建议!

使用grep,您可以获得找到模式的行号。将行号增加 1 并删除两行。

inds <- grep("my_string",df$V1)
result <- df[-unique(c(inds, inds + 1)), ]

使用tidyverse-

library(dplyr)
library(stringr)

result <- df %>%
  filter({
    inds <- str_detect("my_string", V1)
    !(inds | lag(inds, default = FALSE))
    })