2016-03-07 61 views
2

是否有直接的方式使用給定特定向量的dplyr::filter進行過濾?dplyr過濾器:值包含在一個向量中

我正在尋找類似下面的代碼:

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

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

我選擇一個特徵向量,但它可能是任何種類的。

我想過使用grepl作爲邏輯謂詞grepl(dish, top.food),但它不起作用,因爲碟不匹配有效模式(它只需要第一個元素)。

任何想法?日Thnx!

+2

看起來像[r-faq](http://stackoverflow.com/questions/1169388/finding-multiple-elements-in-a-vector)給我 –

回答

5

我認爲你正在尋找值匹配功能%in%

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

或者您可以切換到slice()並使用match()

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

我相信slice()filter()快一點,所以這可能是對你有利。有關價值匹配的所有細節,請參閱help(match)