dplyr filter:值包含在向量中

时间:2016-03-07 14:11:56

标签: r filter dplyr

在给定特定向量的情况下,是否可以使用dplyr::filter进行过滤?

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

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

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

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

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

有什么想法吗?日Thnx!

1 个答案:

答案 0 :(得分:16)

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

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

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

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

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