【发布时间】:2018-10-02 10:53:30
【问题描述】:
根据this post,environment()函数是调用当前环境的函数。
但是,我发现至少eval函数不是这样,下面的例子。
.env <- new.env()
.env$info$progress <- 3
.expr <- "environment()$info$progress <- 5"
eval(parse(text = .expr), envir = .env, enclos = .env)
> invalid (NULL) left side of assignment
我也试过assign函数,但也不起作用
.env <- new.env()
.env$info$progress <- 3
.expr <- "assign(info$progress, 11, envir = environment())"
eval(parse(text = .expr), envir = .env, enclos = .env)
> Error in assign(info$progress, 11, envir = environment()) :
> invalid first argument
所以environment 函数未能在eval 中找到当前环境。
如果有人告诉我如何在上述示例中访问当前环境或如何在eval 中解决此问题,我将不胜感激。
【问题讨论】:
-
您不能通过调用函数并将
environment()作为参数传递来访问函数的当前环境,因为这会将environment()评估为调用函数的环境(例如ff = function(env) c(env, environment()); ff(environment()))。你能解释一下你的最终目标吗?可能存在一种方法来构建调用和使用具有适当 R 对象而不是要解析的字符的环境。
标签: r