如何在 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
由函数 grepl
在 email
列中检测到:
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,
我有一个数据框,我想在其中删除具有特定模式的所有行。我对编译正则表达式感到困惑。
数据:
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
由函数 grepl
在 email
列中检测到:
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,