如何在dplyr的select辅助函数中使用正则表达式

RDa*_*vey 5 regex r dplyr

使用dplyr通过各种辅助功能(例如)选择列很简单contains()。在这些功能的帮助文件中,该参数称为“文字字符串”。但是,可以改用正则表达式吗?

以下示例起作用:

library(dplyr)
iris %>%
   select(contains("Species"))
Run Code Online (Sandbox Code Playgroud)

以下正则表达式示例不:

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

# Not run
data frame with 0 columns and 150 rows
Run Code Online (Sandbox Code Playgroud)

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

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

Jor*_*hau 5

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

library(dplyr)

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

head(out)
#>   Species
#> 1  setosa
#> 2  setosa
#> 3  setosa
#> 4  setosa
#> 5  setosa
#> 6  setosa
Run Code Online (Sandbox Code Playgroud)