2016-07-02 66 views
5

Desidero selezionare tutti gli elementi di un vettore di caratteri tranne uno che corrisponde a un carattere specifico.
Potrei farlo facilmente con %in%, ma non vedo come farlo all'interno di una pipeline dplyr.Seleziona tutti gli elementi di un vettore tranne uno nella pipeline dplyr

Esempio:
Quello che voglio

names<-c("a","b","c","d","e") 
names[!names %in% "c"] 
[1] "a" "b" "d" "e" 

come lo voglio:

names<-c("a","b","c","d","e") 
names %>% ...something... 

risposta

6

Se non ci sono duplicati, possiamo usare setdiff

library(magrittr) 
names %>% 
    setdiff(., "c") 
#[1] "a" "b" "d" "e" 

Oppure utilizzare le operazioni magrittr per impostare il sottoinsieme del vettore.

names %>% 
    `%in%`("c") %>% 
    `!` %>% 
    extract(names, .) 
#[1] "a" "b" "d" "e" 
+1

Questo sarà diverso dal risultato previsto nel caso in cui ci siano duplicati nel vettore –

+0

@docendodiscimus 'names1 <- c (nomi, "c"); identici (nomi1%>% setdiff (., "C"), nomi1 [! Nomi1% in% "c"]) # [1] TRUE' – akrun

+1

prova invece: 'nomi1 <- c (nomi," a "); identico (nomi1%>% setdiff (., "c"), nomi1 [! nomi1% in% "c"]) # [1] FALSE' –

Problemi correlati