web-dev-qa-db-ja.com

dplyrフィルター:値はベクトルに含まれています

特定のベクトルを指定して_dplyr::filter_を使用してフィルタリングする簡単な方法はありますか?

以下のコードのようなものを探しています:

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

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

文字ベクトルを選択しましたが、どのクラスでもかまいません。

Greplを論理述語grepl(dish, top.food)として使用することを検討しましたが、dishが有効なパターンに一致しないため、機能しません(最初の要素のみを使用します)。

何か案は? thnx!

16
Carlos Araya

値マッチング関数_%in%_を探していると思います。

_filter(orders, dish %in% top.food)
_

または、slice()に切り替えてmatch()を使用することもできます。

_slice(orders, match(dish, top.food, 0L))
_

slice()filter()よりも少し速いので、あなたにとって有益かもしれません。値のマッチングの詳細については、help(match)を参照してください。

18
Rich Scriven