2016-07-02 52 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' –