我想在下面解释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:根据建议,我正在更改标题,以表明我的问题与现有问题的标题不同。
答案 0 :(得分:4)
基本上,你的%in%
是错误的。但是,除非您的字符向量具有多个值,否则使用%in%
并没有多大意义。
df %>%
filter(y %in% "service")
# %in% c("service", "...", "...") would be more usual