使用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]$)。
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)