delay {base} | R Documentation |
Delay Evaluation
Description
delay
creates a promise to evaluate the given
expression in the specified environment if its value is requested.
This provides direct access to lazy evaluation mechanism
used by R for the evaluation of (interpreted) functions.
Usage
delay(x, env = .GlobalEnv)
Arguments
x |
an expression. |
env |
an evaluation environment |
Details
If promises are kept inside an environment
or
list
, they can be accessed in several ways without
evaluation, see the examples below.
When a promise is eventually forced, it is evaluated within the
environment specified by env
(who contents may have changed in
the meantime).
Value
A promise to evaluate the expression. The value which is
returned by delay
can be assigned without forcing its
evaluation, but any further accesses will cause evaluation.
Examples
x <- delay({
for(i in 1:7)
cat("yippee!\n")
10
})
x^2 #- yippee
x^2 #- simple number
e <- (function(x, y = 1, z) environment())(1+2, "y", {cat(" HO! "); pi+2})
(le <- as.list(e)) # a list with three promise components
utils::str(le) # even shows what's promised
le$z # prints; does not eval
ez <- le$z
ez-2 # "HO!", pi
ez # 5.14
le$z # still promise