r - 如何将正则表达式与 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]$
)。
解决方案
select 辅助函数matches()
可用于匹配正则表达式:
library(dplyr)
out <- select(iris, matches("s$"))
head(out)
#> Species
#> 1 setosa
#> 2 setosa
#> 3 setosa
#> 4 setosa
#> 5 setosa
#> 6 setosa