J'ai un df comme suit:
a <- data_frame(keep=c("hello", "world"),drop = c("Nice", "work"))
a
Source: local data frame [2 x 2]
keep drop
(chr) (chr)
1 hello Nice
2 world work
Je peux utiliser a %>% select(-drop)
pour supprimer la colonne sans problème. Cependant, si je souhaite transmettre une variable à la colonne drop
, alors elle renvoie une erreur.
name <- "drop"
a %>% select(-(name))
Error in -(name) : invalid argument to unary operator
Vous pouvez utiliser one_of
Pour trouver les positions de colonne, puis utiliser -
Pour la supprimer, select(-one_of(name))
, si vous cochez ?select
, L'utilisation est documentée dans la section Drop variable dans le Exemples:
name <- "drop"
a %>% select(-one_of(name))
# A tibble: 2 × 1
# keep
# <chr>
#1 hello
#2 world
Ou avec select_
, Vous devez coller -
Avec les noms de colonne pour les supprimer et transmettre les noms de colonne collés au paramètre .dots
S'il y a plus d'une colonne à être chuté:
name <- "drop"
a %>% select_(.dots = paste("-", name))
# A tibble: 2 × 1
# keep
# <chr>
#1 hello
#2 world
Vous pouvez utiliser simplement
a <- data_frame(keep=c("hello", "world"),drop = c("Nice", "work"))
select(a, -starts_with('drop'))
# Source: local data frame [2 x 1]
#
# keep
# (chr)
# 1 hello
# 2 world
vous devez également rechercher des solutions déjà écrites. Veuillez lire le document ici Sélectionner/renommer les variables par nom.DPLYR
J'espère que cela fera le travail pour vous :) @ Psidom, merci pour la mise à jour de votre réponse .. mais je demanderai aux votants de voter pour moi aussi, car je suis récemment devenu un utilisateur actif et je dois encore obtenir les privilèges de base sur stackoverflow.
Nous pouvons utiliser select
avec setdiff
a %>%
select_(setdiff(names(.), name))
# A tibble: 2 × 1
# keep
# <chr>
#1 hello
#2 world
Quelques autres possibilités:
name <- "drop"
a %>% `[<-`(name, value=NULL)
a %>% magrittr::inset(name,value=NULL)
a %>% purrr::modify_at(name,~NULL)
Je pouvais seulement faire fonctionner ces solutions en dissociant d'abord les données en utilisant ungroup
:
df <- df %>% ungroup %>% select(-hello)
Remarquez qu'il n'y a pas de guillemets sur le nom de la colonne à supprimer (bonjour). De plus, pour supprimer plusieurs colonnes, il suffit de placer un ,
après bonjour et ajoutez la deuxième colonne.