在dplyr中使用选择辅助函数精准匹配以"500"结尾的变量
dplyr 筛选仅以"500"结尾变量的解决方案
ends_with()属于简单后缀匹配,不会校验后缀前的字符类型,所以会命中所有末尾三位是500的变量,包括2500、1500这类四位数字结尾的变量。你可以搭配matches()选择器用正则规则实现精准筛选:
核心实现代码
library(dplyr) # 筛选符合要求的变量 result_df <- df %>% select(matches("(?<!\\d)500$"))
规则说明
正则(?<!\\d)500$的匹配逻辑:
$限定匹配字符串的末尾位置500$要求字符串末尾恰好是500三个字符(?<!\\d)是负向回顾断言,要求500的前一个字符不能是数字,自然就排除了2500、1500这类四位数字结尾的情况
适配特殊场景
如果你的变量名是纯数字(比如变量名就是500、1500、2500),可以用更简单的精确匹配逻辑:
result_df <- df %>% select(where(~ grepl("^\\d{3}$", .x) & .x == "500", .cols = names(.)))
内容的提问来源于stack exchange,提问作者z_11122
相关产品推荐
相关产品推荐

