(原始问题)这将从以下位置提取身体表达f
并对其进行局部评估g
:
f = function(x) {eval(parse(text = x))}
g = function() {a = 2; eval( body(f), envir = list(x="a"))}
> g()
[1] 2
也可以尝试以下方法:
> g = function() {a = 2; eval(call("f", a))}
> g()
[1] 2
致低级投票者:解释一个答案为什么“无用”是有礼貌的。否则,我们只能猜测可能是哪个方面(正确性,可取性或???)触发了投票。
编辑后:现在,这将向遵循严格编码“道德”的人们提供所要求的结果,并且可能以不太潜在的冒犯性的方式传递给他们:
g = function() {a = 2; environment(h)$FUN(a)}
g()
#[1] 2
可以在Vectorized函数中提取项目的名称和类别:
> ls.str(environment(h))
arg.names : chr "x"
collisions : logi FALSE
FUN : function (x)
FUNV : function (x)
SIMPLIFY : logi TRUE
USE.NAMES : logi TRUE
vectorize.args : chr "x"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句