R - dplyr过滤器 - %in%的行为不符合预期

时间:2017-06-13 05:29:36

标签: r filter 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'列中的单词服务。我不明白为什么带有'audio'和'video'的行也会被过滤掉。

编辑:我不明白为什么我因为提出这个问题而受到抨击。我知道'=='和'%in%'之间的区别。我一般不会问'=='和'%in%'之间的区别。我想知道为什么我的代码在%IN dplyr的过滤器中使用%时没有给出想要的输出。我没有随机使用%in%然后问为什么它之后的行为。我再次意识到%in%的作用。请查看我的问题而不是仅查看标题。

EDIT2:根据建议,我正在更改标题,以表明我的问题与现有问题的标题不同。

1 个答案:

答案 0 :(得分:4)

基本上,你的%in%是错误的。但是,除非您的字符向量具有多个值,否则使用%in%并没有多大意义。

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