2

我正在尝试从调用对象中检索函数对象在此示例中

ff = function(x) {gg(x)}     
gg = function(y) {uu(y)}     
uu = function(z) {browser()} 
ff(1)                        

假设我想ffsys.calls()[[1]]下面获取函数,但我想要ff函数对象,我怎样才能得到它

Browse[1]> deparse(sys.calls()[[1]][1])
[1] "ff()"                             
4

2 回答 2

3

您可以通过将调用转换为列表并对它的第一个成员(即符号)进行子集化来提取符号ff。然后你可以用eval这个符号来显示函数体(或用它来建立一个新的调用)

Browse[1]> eval(as.list(sys.calls()[[1]])[[1]])
#> function(x) {gg(x)}
于 2020-07-25T10:09:14.900 回答
2

我们也可以getdeparseing之后使用

Browse[1]> get(deparse(as.list(sys.calls()[[1]][1])[[1]]))
#function(x) {gg(x)}
于 2020-07-25T20:26:14.743 回答