% Generated by roxygen2: do not edit by hand % Please edit documentation in R/eval-tidy.R \docType{data} \name{dot-data} \alias{dot-data} \alias{.data} \alias{tidyeval-data} \alias{.env} \title{\code{.data} and \code{.env} pronouns} \description{ The \code{.data} and \code{.env} pronouns make it explicit where to find objects when programming with \link[=topic-data-mask]{data-masked} functions. \if{html}{\out{
}}\preformatted{m <- 10 mtcars \%>\% mutate(disp = .data$disp * .env$m) }\if{html}{\out{
}} \itemize{ \item \code{.data} retrieves data-variables from the data frame. \item \code{.env} retrieves env-variables from the environment. } Because the lookup is explicit, there is no ambiguity between both kinds of variables. Compare: \if{html}{\out{
}}\preformatted{disp <- 10 mtcars \%>\% mutate(disp = .data$disp * .env$disp) mtcars \%>\% mutate(disp = disp * disp) }\if{html}{\out{
}} Note that \code{.data} is only a pronoun, it is not a real data frame. This means that you can't take its names or map a function over the contents of \code{.data}. Similarly, \code{.env} is not an actual R environment. For instance, it doesn't have a parent and the subsetting operators behave differently. } \section{\code{.data} versus the magrittr pronoun \code{.}}{ In a \href{https://magrittr.tidyverse.org/}{magrittr pipeline}, \code{.data} is not necessarily interchangeable with the magrittr pronoun \code{.}. With grouped data frames in particular, \code{.data} represents the current group slice whereas the pronoun \code{.} represents the whole data frame. Always prefer using \code{.data} in data-masked context. } \section{Where does \code{.data} live?}{ The \code{.data} pronoun is automatically created for you by data-masking functions using the \link[=eval_tidy]{tidy eval framework}. You don't need to import \code{rlang::.data} or use \code{library(rlang)} to work with this pronoun. However, the \code{.data} object exported from rlang is useful to import in your package namespace to avoid a \verb{R CMD check} note when referring to objects from the data mask. R does not have any way of knowing about the presence or absence of \code{.data} in a particular scope so you need to import it explicitly or equivalently declare it with \code{utils::globalVariables(".data")}. Note that \code{rlang::.data} is a "fake" pronoun. Do not refer to \code{rlang::.data} with the \verb{rlang::} qualifier in data masking code. Use the unqualified \code{.data} symbol that is automatically put in scope by data-masking functions. } \keyword{datasets}