Scoped verbs (_if, _at, _all) have been superseded by the use of if_all() or if_any() in an existing verb. See vignette("colwise") for details.
These scoped filtering verbs apply a predicate expression to a selection of variables. The predicate expression should be quoted with all_vars() or any_vars() and should mention the pronoun . to refer to variables.
.vars_predicate: A quoted predicate expression as returned by all_vars() or any_vars().
Can also be a function or purrr-like formula. In this case, the intersection of the results is taken by default and there's currently no way to request the union.
.preserve: when FALSE (the default), the grouping structure is recalculated based on the resulting data, otherwise it is kept as is.
.predicate: A predicate function to be applied to the columns or a logical vector. The variables for which .predicate is or returns TRUE are selected. This argument is passed to rlang::as_function() and thus supports quosure-style lambda functions and strings representing function names.
.vars: A list of columns generated by vars(), a character vector of column names, a numeric vector of column positions, or NULL.
Grouping variables
The grouping variables that are part of the selection are taken into account to determine filtered rows.
Examples
# While filter() accepts expressions with specific variables, the# scoped filter verbs take an expression with the pronoun `.` and# replicate it over all variables. This expression should be quoted# with all_vars() or any_vars():all_vars(is.na(.))any_vars(is.na(.))# You can take the intersection of the replicated expressions:filter_all(mtcars, all_vars(. >150))# ->filter(mtcars, if_all(everything(),~ .x >150))# Or the union:filter_all(mtcars, any_vars(. >150))# ->filter(mtcars, if_any(everything(),~ . >150))# You can vary the selection of columns on which to apply the# predicate. filter_at() takes a vars() specification:filter_at(mtcars, vars(starts_with("d")), any_vars((. %%2)==0))# ->filter(mtcars, if_any(starts_with("d"),~(.x %%2)==0))# And filter_if() selects variables with a predicate function:filter_if(mtcars,~ all(floor(.)== .), all_vars(. !=0))# ->is_int <-function(x) all(floor(x)== x)filter(mtcars, if_all(where(is_int),~ .x !=0))