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

如何用dplyr的matches正则筛选数据框中1234-mean列?

使用dplyr::select结合matches筛选指定列的解决方法

问题描述

我的数据框包含以下列名:

  • 1234-sd
  • 1234-abs
  • 1234-mean
  • 1234-min

希望通过dplyr::select结合matches方法筛选出仅1234-mean列,尝试了dplyr::select(matches("^1234-*(!mean)"))但未生效,求可行解决方法。

可行解决方案

方案1:精准正则匹配

直接用精确正则锁定目标列,确保只命中1234-mean:

dplyr::select(df, matches("^1234-mean$"))
  • ^ 匹配列名开头,$ 匹配列名结尾,避免误匹配类似1234-mean-extra的列(如果存在)

方案2:直接指定列名(更直观)

如果列名固定,无需正则,直接用反引号包裹含特殊字符的列名即可:

dplyr::select(df, `1234-mean`)

原写法失效原因

你原正则^1234-*(!mean)存在两个问题:

  1. -* 表示匹配0个或多个连字符,不符合你的列名结构(列名只有一个连字符)
  2. (!mean) 不是正则的否定语法,且你的需求是保留mean列,原逻辑本身方向错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:35:05