filter_all: Filter within a selection of variables

Description Usage Arguments Examples

Description

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.

Usage

1
2
3
4
5
filter_all(.tbl, .vars_predicate, .preserve = TRUE)

filter_if(.tbl, .predicate, .vars_predicate, .preserve = TRUE)

filter_at(.tbl, .vars, .vars_predicate, .preserve = TRUE)

Arguments

.tbl

A tbl object.

.vars_predicate

A quoted predicate expression as returned by all_vars() or any_vars().

.preserve

when TRUE (the default), the grouping structure is preserved, otherwise it is recalculated based on the resulting data.

.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.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# 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))

# Or the union:
filter_all(mtcars, any_vars(. > 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))

# And filter_if() selects variables with a predicate function:
filter_if(mtcars, ~ all(floor(.) == .), all_vars(. != 0))

olascodgreat/samife documentation built on May 13, 2019, 6:11 p.m.