f_eval: Evaluate a formula

Description Usage Arguments Details Pronouns Examples

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

1
2
3
4
5
6
7

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 f_interp for more details.

data

A list (or data frame). find_data 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.

Details

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

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.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 uq()
# See ?f_interp for more details
var <- ~ cyl
f_eval(~ mean( uq(var) ), mtcars)

lazyeval documentation built on Nov. 17, 2017, 5:10 a.m.