Releases: hadley/lazyeval
lazyeval 0.2.1
This is a maintenance release. The lazyeval package is no longer
developed as the tidyverse is switching to tidy evaluation.
-
Use new registration system.
-
Switch from
SET_NAMED()
toMARK_NOT_MUTABLE()
in prevision of an
API change in R core -
No longer check the type of the sides of the formula.
lazyeval 0.2.0
Formula-based lazy evaluation
Lazyeval has a new system for lazy-eval based on formulas, described in depth in the new lazyeval
vignette. This system is still a little experimental - it hasn't seen much use outside of the vignette, so it certainly may change a little in the future. However, long-term goal is to use these tools across all of my packages (ggplot2, tidyr, dplyr, etc), and I am fairly confident that this is a robust system that won't need major changes.
There are three key components:
f_eval()
evaluates a formula in the environment where it was defined.
If supplied, values are first looked for in an optionaldata
argument.
Pronouns.data
and.env
can be used to resolve ambiguity in this case.
(#43). Longer formsf_eval_rhs()
andf_eval_lhs()
emphasise the side
of the formula that you want to evaluate (#64).f_interp()
provides a full quasiquoting system usinguq()
for unquote
anduqs()
for unquote-splice (#36).f_capture()
anddots_capture()
make it easy to turn promises
and...
into explicit formulas. These should be used sparingly, as
generally lazy-eval is preferred to non-standard eval.- For functions that work with
...
,f_list()
andas_f_list()
make it
possible to use the evaluated LHS of a formula to name the elements of a
list (#59).
The core components are accompanied by a number of helper functions:
- Identify a formula with
is_formula()
. - Create a formula from a quoted call and an environment with
f_new()
. - "Unwrap" a formula removing one level from the stack of parent environments
withf_unwrap()
. - Get or set either side of a formula with
f_rhs()
orf_lhs()
, and
the environment withf_env()
. - Convert to text/label with
f_text()
andf_label()
.
I've also added expr_find()
, expr_text()
and expr_label()
explicitly to find the expression associated with a function argument, and label it for output (#58). This is one of the primary uses cases for NSE. expr_env()
is a similar helper that returns the environment associated with a promise (#67).
lazyeval 0.1.10
lazyeval 0.1.9
Initial release of the lazyeval package.