48 lines
2.1 KiB
R
48 lines
2.1 KiB
R
#' Tidy eval helpers
|
|
#'
|
|
#' @description
|
|
#'
|
|
#' * \code{\link[rlang]{sym}()} creates a symbol from a string and
|
|
#' \code{\link[rlang:sym]{syms}()} creates a list of symbols from a
|
|
#' character vector.
|
|
#'
|
|
#' * \code{\link[rlang:nse-defuse]{enquo}()} and
|
|
#' \code{\link[rlang:nse-defuse]{enquos}()} delay the execution of one or
|
|
#' several function arguments. \code{enquo()} returns a single quoted
|
|
#' expression, which is like a blueprint for the delayed computation.
|
|
#' \code{enquos()} returns a list of such quoted expressions.
|
|
#'
|
|
#' * \code{\link[rlang:nse-defuse]{expr}()} quotes a new expression _locally_. It
|
|
#' is mostly useful to build new expressions around arguments
|
|
#' captured with [enquo()] or [enquos()]:
|
|
#' \code{expr(mean(!!enquo(arg), na.rm = TRUE))}.
|
|
#'
|
|
#' * \code{\link[rlang]{as_name}()} transforms a quoted variable name
|
|
#' into a string. Supplying something else than a quoted variable
|
|
#' name is an error.
|
|
#'
|
|
#' That's unlike \code{\link[rlang]{as_label}()} which also returns
|
|
#' a single string but supports any kind of R object as input,
|
|
#' including quoted function calls and vectors. Its purpose is to
|
|
#' summarise that object into a single label. That label is often
|
|
#' suitable as a default name.
|
|
#'
|
|
#' If you don't know what a quoted expression contains (for instance
|
|
#' expressions captured with \code{enquo()} could be a variable
|
|
#' name, a call to a function, or an unquoted constant), then use
|
|
#' \code{as_label()}. If you know you have quoted a simple variable
|
|
#' name, or would like to enforce this, use \code{as_name()}.
|
|
#'
|
|
#' To learn more about tidy eval and how to use these tools, visit
|
|
#' \url{https://tidyeval.tidyverse.org} and the
|
|
#' \href{https://adv-r.hadley.nz/metaprogramming.html}{Metaprogramming
|
|
#' section} of \href{https://adv-r.hadley.nz}{Advanced R}.
|
|
#'
|
|
#' @md
|
|
#' @name tidyeval
|
|
#' @keywords internal
|
|
#' @importFrom rlang expr enquo enquos sym syms .data := as_name as_label
|
|
#' @aliases expr enquo enquos sym syms .data := as_name as_label
|
|
#' @export expr enquo enquos sym syms .data := as_name as_label
|
|
NULL
|