来自lazyeval包的lazy和lazy_eval

时间:2016-03-21 17:05:07

标签: r

如果我写:

> 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

一切正常。

可能我会错过理解非常基本的东西,但是非常感谢任何帮助

0 个答案:

没有答案