如果我写:
> lazy_1 <- lazy(x+y, env = globalenv())
> lazy_1
<lazy>
expr: x + y
env: <environment: R_GlobalEnv>
> x <- 1 ; y <- 2
> lazy_eval(lazy_1)
[1] 3
这对我有意义,因为globalenv()是将表达式评估为状态的环境?lazy
但是当我写道:
> rm(list = ls())
> env_2 <- new.env()
> env_2$x <- 6
> env_2$y <- 3
> lazy_2 <- lazy(x+y, env = env_2)
> lazy_2
<lazy>
expr: x + y
env: <environment: R_GlobalEnv>
> lazy_eval(lazy_2)
Error in eval(expr, envir, enclos) : object 'x' not found
我希望globalenv和env_2
具有相同的行为请注意,如果我强制执行lazy_2的结构,我认为它应该是:
> lazy_2$env <- env_2
> lazy_eval(lazy_2)
[1] 9
一切正常。
可能我会错过理解非常基本的东西,但是非常感谢任何帮助