R语言中dplyr filter函数无法过滤特定后缀数据框的问题
解决R中过滤以"(2).txt"结尾的doc_id行的问题
正确实现方式
使用dplyr + stringr
library(dplyr) library(stringr) # 过滤掉所有doc_id结尾为"(2).txt"的行 constitutions <- constitutions %>% filter(!str_detect(doc_id, "\\(2\\)\\.txt$"))
使用Base R
# 用grepl实现过滤 constitutions <- constitutions[!grepl("\\(2\\)\\.txt$", constitutions$doc_id), ] # 或者用subset constitutions <- subset(constitutions, !grepl("\\(2\\)\\.txt$", doc_id))
你之前代码的问题分析
正则表达式错误:之前用的
"(2).txt"是无效的正则规则:(和)是正则中的分组符号,需要用\\转义为\\(和\\)才能匹配字面括号.在正则中代表任意单个字符,必须转义为\\.才能匹配字面的点- 缺少
$符号,$用于指定匹配字符串的结尾,否则只要字符串中包含类似模式的片段都会被过滤,无法精准匹配结尾的目标行
%in%用法错误:
%in%是用来检查整个字符串是否完全等于目标值的,而你的目标行doc_id是类似Brazil_1988_rev_2017 (2).txt,和"(2).txt"完全不相等,所以这个方法根本无法匹配到目标行。
内容的提问来源于stack exchange,提问作者bmogil
相关产品推荐
相关产品推荐

