dplyr过滤器:值包含在向量中

27

有没有一种直接的方法使用dplyr::filter根据特定向量进行过滤?

我正在寻找类似下面的代码:

top.food <- c('pizza', 'bacon', 'burger')

filter(orders, dish == 'pizza' | dish == 'bacon' | dish == 'burger')

我选择了一个字符向量,但它可以是任何类别。

我考虑使用grepl作为逻辑谓词grepl(dish, top.food),但它不起作用,因为dish不匹配有效的模式(它只取第一个元素)。

有什么想法吗?谢谢!


2
看起来对我来说像是一个 r-faq - David Arenburg
1个回答

47

我认为你正在寻找匹配值函数%in%

filter(orders, dish %in% top.food)

或者你可以切换到slice()并使用match()

slice(orders, match(dish, top.food, 0L))

我相信slice()filter()稍微快一些,所以这可能对你有利。请参阅help(match)获取有关匹配值的所有详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接