dplyr_tidy_select function

Argument type: tidy-select

Argument type: tidy-select

This page describes the <tidy-select> argument modifier which indicates the argument supports tidy selections . Tidy selection provides a concise dialect of R for selecting variables based on their names or properties.

Tidy selection is a variant of tidy evaluation. This means that inside functions, tidy-select arguments require special attention, as described in the Indirection section below. If you've never heard of tidy evaluation before, start with vignette("programming").

Overview of selection features

Tidyverse selections implement a dialect of R where operators make it easy to select variables:

  • : for selecting a range of consecutive variables.
  • ! for taking the complement of a set of variables.
  • & and | for selecting the intersection or the union of two sets of variables.
  • c() for combining selections.

In addition, you can use selection helpers . Some helpers select specific columns:

  • everything(): Matches all variables.
  • last_col(): Select last variable, possibly with an offset.
  • group_cols(): Select all grouping columns.

Other helpers select variables by matching patterns in their names:

  • starts_with(): Starts with a prefix.
  • ends_with(): Ends with a suffix.
  • contains(): Contains a literal string.
  • matches(): Matches a regular expression.
  • num_range(): Matches a numerical range like x01, x02, x03.

Or from variables stored in a character vector:

  • all_of(): Matches variable names in a character vector. All names must be present, otherwise an out-of-bounds error is thrown.
  • any_of(): Same as all_of(), except that no error is thrown for names that don't exist.

Or using a predicate function:

  • where(): Applies a function to all variables and selects those for which the function returns TRUE.

Indirection

There are two main cases:

  • If you have a character vector of column names, use all_of()

    or any_of(), depending on whether or not you want unknown variable names to cause an error, e.g. select(df, all_of(vars)), select(df, !any_of(vars)).

  • If you want the user to be able to supply a tidyselect specification in a function argument, embrace the function argument, e.g. select(df, {{ vars }}).

  • Maintainer: Hadley Wickham
  • License: MIT + file LICENSE
  • Last published: 2023-11-17