Data pronouns for tidy evaluation
These pronouns allow you to be explicit about where to find objects when programming with data masked functions.
m <- 10 mtcars %>% mutate(disp = .data$disp * .env$m)
.data
retrieves data-variables from the data frame.
.env
retrieves env-variables from the environment.
Because the lookup is explicit, there is no ambiguity between both kinds of variables. Compare:
disp <- 10 mtcars %>% mutate(disp = .data$disp * .env$disp) mtcars %>% mutate(disp = disp * disp)
The .data
object exported from rlang is also useful to import in
your package namespace to avoid a R CMD check
note when referring
to objects from the data mask.
Note that .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 .data
. Similarly, .env
is not an actual R
environment. For instance, it doesn't have a parent and the
subsetting operators behave differently.
.data .env
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.