Je veux sélectionner plusieurs colonnes en fonction de leurs noms avec une expression regex. J'essaie de le faire avec la syntaxe de tuyauterie du package dplyr
. J'ai vérifié les autres sujets, mais je n'ai trouvé de réponses que sur une seule chaîne.
Avec base R:
library(dplyr)
mtcars[grepl('m|ar', names(mtcars))]
### mpg am gear carb
### Mazda RX4 21.0 1 4 4
### Mazda RX4 Wag 21.0 1 4 4
Cependant, cela ne fonctionne pas avec la méthode select/contains:
mtcars %>% select(contains('m|ar'))
### data frame with 0 columns and 32 rows
Qu'est-ce qui ne va pas?
Vous pouvez utiliser matches
mtcars %>%
select(matches('m|ar')) %>%
head(2)
# mpg am gear carb
#Mazda RX4 21 1 4 4
#Mazda RX4 Wag 21 1 4 4
Selon le ?select
Documentation
‘Matches (x, ignore.case = TRUE)’: sélectionne toutes les variables dont le nom correspond à l’expression régulière ‘x’
Bien que contains
fonctionne avec une seule chaîne
mtcars %>%
select(contains('m'))