2016-07-02 97 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 <任何重複 - C(名字,「C」); 相同(names1%>%setdiff(。,「c」),names1 [!names1%in%「c」]) #[1] TRUE' – akrun

+1

試試這個:'names1 < - c(names,「a 「);相同(名稱1%>%setdiff(。,「c」),名稱1 [!名稱1%在%「c」])#[1] FALSE' –