如何在 R 中删除具有模式的行?

How do I delete a row with a pattern in R?

我有一个数据框,我想在其中删除具有特定模式的所有行。我对编译正则表达式感到困惑。

数据:

structure(list(id = 1:5, email = c("1@gmail.com", "2@gmail.com", 
"3@gmail.com", "4@pattern.com", "5@pattern.com")), class = "data.frame", row.names = c(NA, 
-5L))

我想做的是:

data <- data %>%
  filter(email != ".+@pattern.com")

但是我的正则表达式有问题。为此类模式编写正则表达式的最有效方法是什么?我的示例案例的正确正则表达式模式是什么?

这使用 grepl 执行正则表达式比较

libary(dplyr)

data %>%
  filter(!grepl("@pattern.com$", email))

  id       email
1  1 1@gmail.com
2  2 2@gmail.com
3  3 3@gmail.com

base R 中,您可以删除 which 中的行 模式 @pattern.com 由函数 greplemail 列中检测到:

data[-which(grepl("@pattern.com", data$email)),]
  id       email
1  1 1@gmail.com
2  2 2@gmail.com
3  3 3@gmail.com

数据:

data <- structure(list(id = 1:5, email = c("1@gmail.com", "2@gmail.com", 
                                           "3@gmail.com", "4@pattern.com", "5@pattern.com")), class = "data.frame", row.names = c(NA,