我正在尝试从调用对象中检索功能对象 在这个例子中
ff = function(x) {gg(x)}
gg = function(y) {uu(y)}
uu = function(z) {browser()}
ff(1)
说我想从ff
获得函数sys.calls()[[1]]
,但下面却得到了ff
函数对象,我该如何获得它
Browse[1]> deparse(sys.calls()[[1]][1])
[1] "ff()"
答案 0 :(得分:3)
您可以通过将调用转换为列表并将其第一个成员子集设置为符号ff
来提取符号。然后,您可以eval
这个符号来显示函数体(或使用它来建立新的调用)
Browse[1]> eval(as.list(sys.calls()[[1]])[[1]])
#> function(x) {gg(x)}
答案 1 :(得分:2)
我们还可以在get
之后使用deparse
Browse[1]> get(deparse(as.list(sys.calls()[[1]][1])[[1]]))
#function(x) {gg(x)}