dplyr 过滤器:值包含在向量中
Posted
技术标签:
【中文标题】dplyr 过滤器:值包含在向量中【英文标题】:dplyr filter : value is contained in a vector 【发布时间】:2016-06-21 03:08:33 【问题描述】:在给定特定向量的情况下,是否有直接使用dplyr::filter
进行过滤的方法?
我正在寻找类似以下代码的内容:
top.food <- c('pizza', 'bacon', 'burger')
filter(orders, dish == 'pizza' | dish == 'bacon' | dish == 'burger')
我选择了一个字符向量,但它可以是任何类。
我曾考虑使用 grepl 作为逻辑谓词 grepl(dish, top.food)
,但它不起作用,因为 disc 不匹配有效模式(它只需要第一个元素)。
有什么想法吗?谢谢!
【问题讨论】:
在我看来像 r-faq 【参考方案1】:我想你正在寻找值匹配函数%in%
。
filter(orders, dish %in% top.food)
或者您可以切换到slice()
并使用match()
。
slice(orders, match(dish, top.food, 0L))
我相信slice()
比filter()
快一点,所以这可能对你有益。有关值匹配的所有详细信息,请参阅help(match)
。
【讨论】:
以上是关于dplyr 过滤器:值包含在向量中的主要内容,如果未能解决你的问题,请参考以下文章