我遇到了drake 问题 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,表,nomatch = 0L):找不到对象“vectorize.args”
编辑
在现实世界中,f
并且g
是用户定义的,所以我应该按原样保留这些函数的主体。
使用attach
附加的对象e
环境和调用该函数f
。
e = new.env(parent = globalenv())
e$f = Vectorize(function(x) g(x), "x")
e$g = function(x) x + 1
attach(e)
search()
eval(parse(text='f(1:10)'))
# [1] 2 3 4 5 6 7 8 9 10 11
detach(e)
search()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句