2016-07-02 18 views
5

Chcę wybrać wszystkie elementy wektora znaku, z wyjątkiem tego, który pasuje do konkretnego znaku.
Mogłem to łatwo z %in%, ale nie widzę, jak to zrobić wewnątrz rurociągu dplyr.Wybierz wszystkie elementy wektora z wyjątkiem jednego w potoku dplyr

Przykład:
Co chcę

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

Jak chcę go:

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

Odpowiedz

6

Jeśli nie ma duplikatów, możemy użyć setdiff

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

Lub użyj operacji magrittr do podzbioru wektora.

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

ten będzie różnił się od oczekiwanego rezultatu w przypadku istnieją duplikatami w @docendodiscimus wektor –

+0

'names1 <- c (nazwy„C”); identyczny (names1%>% setdiff (., "C"), names1 [! Names1% w% "c"]) # [1] TRUE' – akrun

+1

spróbuj tego zamiast: 'names1 <- c (names," a "); identyczne (names1%>% setdiff (., "c"), names1 [! names1% in% "c"]) # [1] FALSE' –

Powiązane problemy