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

如何使用R语言dplyr筛选包含指定字符序列的行名

错误原因

你使用的%in%运算符是精确匹配逻辑,只会筛选行名**完全等于"^M"**的行,自然返回空结果。正则表达式的匹配需要使用专门的匹配函数实现。

正确实现方案

方法1:正则匹配(适合复杂匹配规则)

使用grepl()函数执行正则匹配,管道中用.指代当前传入的数据集:

mtcars %>% filter(grepl("^M", rownames(.)))

其中^M是正则规则,表示匹配以大写字母M开头的字符串。

方法2:前缀匹配(简单场景更易用)

如果仅需要匹配前缀,直接用startsWith()函数更直观,无需掌握正则语法:

mtcars %>% filter(startsWith(rownames(.), "M"))

方法3:行名转列后筛选(适合后续需要用到行名信息的场景)

可以先将行名转为普通数据列,再按照普通字符串列的筛选逻辑处理:

# 筛选后保留行名列
mtcars %>% 
  rownames_to_column("car_model") %>% 
  filter(startsWith(car_model, "M"))

# 筛选后恢复行名格式
mtcars %>% 
  rownames_to_column("car_model") %>% 
  filter(startsWith(car_model, "M")) %>% 
  column_to_rownames("car_model")

以上三种方法都可以得到你期望的筛选结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:54:03