You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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))

你之前代码的问题分析

  1. 正则表达式错误:之前用的"(2).txt"是无效的正则规则:

    • (和)是正则中的分组符号,需要用\\转义为\\(和\\)才能匹配字面括号
    • .在正则中代表任意单个字符,必须转义为\\.才能匹配字面的点
    • 缺少$符号,$用于指定匹配字符串的结尾,否则只要字符串中包含类似模式的片段都会被过滤,无法精准匹配结尾的目标行
  2. %in%用法错误:%in%是用来检查整个字符串是否完全等于目标值的,而你的目标行doc_id是类似Brazil_1988_rev_2017 (2).txt,和"(2).txt"完全不相等,所以这个方法根本无法匹配到目标行。

内容的提问来源于stack exchange,提问作者bmogil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:42:39