Is there a straight way to filter using dplyr::filter
given an specific vector?
I'm looking for something like the code below:
top.food <- c('pizza', 'bacon', 'burger') filter(orders, dish == 'pizza' | dish == 'bacon' | dish == 'burger')
I've chosen a character vector but it could be of any class.
I've thought about using grepl as a logical predicate grepl(dish, top.food)
but it doesn't work since dish doesn't match a valid pattern (it takes just the 1st element).
Any ideas? thnx!
dplyr ends up looking a lot cleaner than the base R code in my opinion. unfortunately it always ends up a mess with vectors.
The filter() function is used to subset a data frame, retaining all rows that satisfy your conditions. To be retained, the row must produce a value of TRUE for all conditions.
I think you are looking for the value matching function %in%
.
filter(orders, dish %in% top.food)
Or you can switch to slice()
and use match()
.
slice(orders, match(dish, top.food, 0L))
I believe that slice()
is a bit faster than filter()
, so that might be beneficial to you. See help(match)
for all the details on value matching.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With