knitr::opts_chunk$set ( collapse = TRUE, warning = TRUE, message = TRUE, width = 120, comment = "#>", fig.retina = 2, fig.path = "README-" ) options (repos = c ( ropenscireviewtools = "https://mpadge.r-universe.dev", CRAN = "https://cloud.r-project.org" )) library (typetracer)
This vignette briefly illustrates some examples of tracing parameters evaluated in non-standard ways. This first examples demonstrates that parameter values are captured at the initial point of function entry.
eval_x_late_NSE <- function (x, y) { y <- 10 * y eval (substitute (x)) } inject_tracer (eval_x_late_NSE) eval_x_late_NSE (y + 1, 2:3) res <- load_traces () res$par_name res$uneval res$eval
The parameter x
is evaluated at the point of function entry as y + 1
which,
with a value of y = 2:3
, gives the expected evaluated result of x = 3:4
,
while the function ultimately returns the expected values of (10 * 2:3) + 1
,
or 21 31
, because the first line of y <- 10 * y
is evaluated prior to
substituting the value passed for x
of y + 1
.
The second example specifies a default value of x = y + 1
, with the actual
call passing no value, and thus having "NULL"
in the unevaluated version,
while evaluated versions remain identical.
clear_traces () # clear all preceding traces eval_x_late_standard <- function (x = y + 1, y, z = y ~ x) { y <- 10 * y x } inject_tracer (eval_x_late_standard) eval_x_late_standard (, 2:3) res <- load_traces () res$par_name res$uneval res$eval
The traces produced by typetracer
also include a column, formal
, which
contains the default values specified in the definition of
eval_x_late_standard()
:
res$formal
Those three columns of formal
, uneval
, and eval
thus contain
all definitions for all parameters passed to the function environment, in the three possible states of:
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.