【发布时间】:2023-03-18 03:03:01
【问题描述】:
我在使用 drake issue 35 时遇到了问题,我已经为这篇 SO 帖子复制了一个最小版本的错误。简而言之,我希望eval(parse()) 能够使用嵌套函数、非平凡闭包和自定义环境。如果下面的eval(parse(text = "f(1:10)"), envir = e) 返回2:11 且没有错误或警告,我会认为问题已解决。
e = new.env(parent = globalenv())
e$f = Vectorize(function(x) g(x), "x")
e$g = function(x) x + 1
eval(parse(text = "f(1:10)"), envir = e)
(函数(x)中的错误:找不到函数“g”
environment(e$f) = environment(e$g) = e
eval(parse(text = "f(1:10)"), envir = e)
匹配错误(x, table, nomatch = 0L): 找不到对象“vectorize.args”
编辑
在现实世界中,f 和 g 是用户定义的,所以我应该保持这些函数的主体不变。
【问题讨论】:
标签: r closures eval lexical-scope