首页 > 解决方案 > 如何将正则表达式与 dplyr 的选择辅助函数一起使用

问题描述

使用 dplyr 使用各种辅助函数(例如contains(). 在这些函数的帮助文件中,参数被称为“文字字符串”。但是,是否可以改用正则表达式?

以下示例有效:

library(dplyr)
iris %>%
   select(contains("Species"))

以下正则表达式示例没有:

# Select all column names that end with lower case "s"
iris %>%
   select(contains("s$"))

# Not run
data frame with 0 columns and 150 rows

我想知道是否可以在 dplyr 选择辅助函数中使用正则表达式,如果可以,它们的实现。

如果这是不可能的,我将使用替代方法(例如,base 或 data.table)来回答。对于背景,我的最终目标是使用一个summarise_at()函数或等效函数来对所有以数字结尾的列求和(即 regexp [0-9]$)。

标签: rregexdplyr

解决方案


select 辅助函数matches()可用于匹配正则表达式:

library(dplyr)

out <- select(iris, matches("s$"))

head(out)
#>   Species
#> 1  setosa
#> 2  setosa
#> 3  setosa
#> 4  setosa
#> 5  setosa
#> 6  setosa

推荐阅读