2017-06-13 80 views
-2

我想获得下面将R的dplyr过滤行为解释%的%并不表现:的R - dplyr过滤器 - 如预期

df <- data.frame(x = rep('test',3), y = c('service','audio','video')) 

filter(df , y == 'service') 
#result 1 
x  y 
test service 

filter(df , 'service' %in% y) 
#result 2 
x  y 
test service 
test audio 
test video 

我可以得到上述行为的解释?我想过滤掉'y'列中的单词服务。我不明白为什么“音频”和“视频”这一行也被过滤了。

编辑:我不明白为什么我被标记为有这个问题。我知道'=='和'%in%'之间的区别。一般来说,我不会问'=='和'%in%'之间的区别。我想知道为什么我的代码在%IN dplyr的过滤器中使用%时没有给出想要的输出。我没有随机使用%in,然后询问为什么它随后会出现这种情况。我再次意识到百分比中的百分比。请看看我的问题,而不是只看到标题。

编辑2:根据建议,我正在更改我的标题,以表明我的问题与具有类似标题的现有问题不同。

+4

' “服务”,在DF%$ y'%只是给你一个值,TRUE;。没有任何关于这个表达式使它遍历行,它只是说“是矢量'y'中的值''service''?”。 – Marius

+0

也许编辑标题。正如我们所知道的那样,问题在过滤器参数中是不正确的顺序,这与建议的副本是不同的问题。 – neilfws

+0

@neilfws感谢您的建议。我正在尝试。 – addicted

回答

4

基本上,您的%in%是错误的方法。但使用%in%没有多少意义,除非你有一个以上的值的字符向量。

df %>% 
    filter(y %in% "service") 
    # %in% c("service", "...", "...") would be more usual 
+0

谢谢你。我觉得混合起来很愚蠢。最初只会有一个值,但我想创建一个向量变量,所以我可以这样做:(y%in%char_vector) – addicted