Why? (In Practice)
Foreign and local expressions:
my_fun <- function(my_var) {
their_function({{ my_var }})
# or
my_new_var <- enquo(my_var)
their_function(!!my_new_var)
}
External defusing with ...
:
my_group_by <- function(data, vars) {
data |>
dplyr::group_by(!!!vars)
}
my_group_by(data, dplyr::vars(X1, X2))
dplyr::vars()
creates quosures and passes them- An alias of
rlang::quos()
- An alias of
- “As a rule of thumb, quosures are only needed for arguments defused with enquo() or enquos() (or with {{ which calls enquo() implicitly)”