web-dev-qa-db-fra.com

dplyr: sélectionne toutes les variables sauf celles contenues dans le vecteur

Cela devrait être un problème simple, mais je me bats.

J'ai un vecteur de noms de variable que je veux exclure d'un bloc de données:

df <- data.frame(matrix(rexp(50), nrow = 10, ncol = 5))
names(df) <- paste0(rep("variable_", 5), 1:5)

excluded_vars <- c("variable_1", "variable_3")

J'aurais pensé qu'exclure simplement l'objet dans l'instruction select avec - aurait fonctionné:

select(df, -excluded_vars)

Mais j'obtiens l'erreur suivante:

Erreur dans -excluded_vars: argument non valide pour l'opérateur unaire

il en va de même lorsque vous utilisez select_()

Des idées?

3
Shinobi_Atobe

Vous devez utiliser la fonction one_of:

select(df, -one_of(excluded_vars))

Voir la documentation dplyr pour help help pour plus d’informations sur la sélection en fonction des noms de variables.

6
C. Braun

Avec select_, vous pouvez simplement utiliser setdiff.

select_(df, .dots = setdiff(colnames(df), excluded_vars))
0
erocoar