dplyr filter:值包含在向量中

Car*_*aya 11 r filter dplyr

是否有直接的方法来过滤使用dplyr::filter给定的特定向量?

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

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

filter(orders, dish == 'pizza' | dish == 'bacon' | dish == 'burger')
Run Code Online (Sandbox Code Playgroud)

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

我曾经考虑过使用grepl作为逻辑谓词,grepl(dish, top.food)但它不起作用,因为菜与有效模式不匹配(它只需要第一个元素).

有任何想法吗?日Thnx!

Ric*_*ven 18

我想你正在寻找价值匹配功能%in%.

filter(orders, dish %in% top.food)
Run Code Online (Sandbox Code Playgroud)

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

slice(orders, match(dish, top.food, 0L))
Run Code Online (Sandbox Code Playgroud)

我相信这slice()filter()你快一点,所以这可能对你有益.请参阅help(match)有关值匹配的所有详细信息.