rlang (version 0.0.0.9000)

f_eval: Evaluate a formula

Description

f_eval_rhs evaluates the RHS of a formula and f_eval_lhs evaluates the LHS. f_eval is a shortcut for f_eval_rhs since that is what you most commonly need.

Usage

f_eval_rhs(f, data = NULL)
f_eval_lhs(f, data = NULL)
f_eval(f, data = NULL)
data_source(x, lookup_msg = NULL)

Arguments

f
A formula. Any expressions wrapped in UQ() will will be "unquoted", i.e. they will be evaluated, and the results inserted back into the formula. See interp for more details.
data
A list (or data frame). data_source is a generic used to find the data associated with a given object. If you want to make f_eval work for your own objects, you can define a method for this generic.
x
An object for which you want to find associated data.
lookup_msg
An error message when your data source is accessed inappropriately (by position rather than name).

Pronouns

When used with data, f_eval provides two pronouns to make it possible to be explicit about where you want values to come from: .env and .data. These are thin wrappers around .data and .env that throw errors if you try to access non-existent values.

Details

If data is specified, variables will be looked for first in this object, and if not found in the environment of the formula.

Examples

Run this code
f_eval(~ 1 + 2 + 3)

# formulas automatically capture their enclosing environment
foo <- function(x) {
  y <- 10
  ~ x + y
}
f <- foo(1)
f
f_eval(f)

# If you supply data, f_eval will look their first:
f_eval(~ cyl, mtcars)

# To avoid ambiguity, you can use .env and .data pronouns to be
# explicit:
cyl <- 10
f_eval(~ .data$cyl, mtcars)
f_eval(~ .env$cyl, mtcars)

# Imagine you are computing the mean of a variable:
f_eval(~ mean(cyl), mtcars)
# How can you change the variable that's being computed?
# The easiest way is "unquote" with !!
# See ?interp for more details
var <- ~ cyl
f_eval(~ mean( !!var ), mtcars)

Run the code above in your browser using DataLab