如何解决如何在 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,
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。