2016-07-02 3 views
5

Я хочу выделить все элементы символьного вектора, кроме одного, соответствующего определенному символу.
Я мог бы сделать это легко с %in%, но я не вижу, как это сделать внутри конвейера dplyr.Выделить все элементы вектора, кроме одного в конвейере dplyr

Пример:
То, что я хочу

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

Как я хочу это:

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

ответ

6

Если нет дубликатов, мы можем использовать setdiff

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

Или используйте операции magrittr для подмножества вектора.

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

Это будет отличаться от ожидаемого результата в случае, если есть какие-либо дубликаты в вектор –

+0

@docendodiscimus 'names1 <- с (имена,«с»); идентичны (names1%>% setdiff (., "C"), names1 [! Names1% in% "c"]) # [1] TRUE' – akrun

+1

попробуйте вместо этого: 'names1 <- c (names," a «); идентичны (names1%>% setdiff (., "c"), names1 [! names1% in% "c"]) # [1] FALSE' –

Смежные вопросы