scoped: Operate on a selection of variables

scopedR Documentation

Operate on a selection of variables



Scoped verbs (⁠_if⁠, ⁠_at⁠, ⁠_all⁠) have been superseded by the use of pick() or across() in an existing verb. See vignette("colwise") for details.

The variants suffixed with ⁠_if⁠, ⁠_at⁠ or ⁠_all⁠ apply an expression (sometimes several) to all variables within a specified subset. This subset can contain all variables (⁠_all⁠ variants), a vars() selection (⁠_at⁠ variants), or variables selected with a predicate (⁠_if⁠ variants).

The verbs with scoped variants are:

  • mutate(), transmute() and summarise(). See summarise_all().

  • filter(). See filter_all().

  • group_by(). See group_by_all().

  • rename() and select(). See select_all().

  • arrange(). See arrange_all()

There are three kinds of scoped variants. They differ in the scope of the variable selection on which operations are applied:

  • Verbs suffixed with ⁠_all()⁠ apply an operation on all variables.

  • Verbs suffixed with ⁠_at()⁠ apply an operation on a subset of variables specified with the quoting function vars(). This quoting function accepts tidyselect::vars_select() helpers like starts_with(). Instead of a vars() selection, you can also supply an integerish vector of column positions or a character vector of column names.

  • Verbs suffixed with ⁠_if()⁠ apply an operation on the subset of variables for which a predicate function returns TRUE. Instead of a predicate function, you can also supply a logical vector.



A tbl object.


A function fun, a quosure style lambda ~ fun(.) or a list of either form.


A list of columns generated by vars(), a character vector of column names, a numeric vector of column positions, or NULL.


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.


Additional arguments for the function calls in .funs. These are evaluated only once, with tidy dots support.

Grouping variables

Most of these operations also apply on the grouping variables when they are part of the selection. This includes:

  • arrange_all(), arrange_at(), and arrange_if()

  • distinct_all(), distinct_at(), and distinct_if()

  • filter_all(), filter_at(), and filter_if()

  • group_by_all(), group_by_at(), and group_by_if()

  • select_all(), select_at(), and select_if()

This is not the case for summarising and mutating variants where operations are not applied on grouping variables. The behaviour depends on whether the selection is implicit (all and if selections) or explicit (at selections). Grouping variables covered by explicit selections (with summarise_at(), mutate_at(), and transmute_at()) are always an error. For implicit selections, the grouping variables are always ignored. In this case, the level of verbosity depends on the kind of operation:

  • Summarising operations (summarise_all() and summarise_if()) ignore grouping variables silently because it is obvious that operations are not applied on grouping variables.

  • On the other hand it isn't as obvious in the case of mutating operations (mutate_all(), mutate_if(), transmute_all(), and transmute_if()). For this reason, they issue a message indicating which grouping variables are ignored.

dplyr documentation built on Nov. 17, 2023, 5:08 p.m.