如何在R中访问函数外部的被调用函数的参数?
问题描述:
我想知道是否有可能在R中访问该函数之外的被调用函数的参数? 例如,如果我有以下功能:如何在R中访问函数外部的被调用函数的参数?
testfunc = function(a,b,c=1,d=2){
return(list(res1 = a+b,res2 = c+d))
}
,我叫那个函数像这样:
testfunc(4,5)
我想办法进入功能外每个参数的值,而不会增加函数内部的任何东西,比如match.call等等。所以,理想情况下我想要一个包装函数 getarguments(testfunc(4,5))并返回: a = 4,b = 5,c = 1,d = 2
这是可能的乐?非常感谢。
答
我当然不会推荐这样做,但它在理论上是可行的。如何
getarguments <- function(x) {
call<-substitute(x)
fx<-eval.parent(call[[1]])
body(fx) <- as.call(list(quote(`{`), quote(return(mget(ls())))))
call[[1]] <- fx
eval.parent(call)
}
getarguments(testfunc(4,5))
返回
list(a = 4, b = 5, c = 1, d = 2)
当过我需要做这样的事情,我倾向于使用debugonce(testfunc)
。然后您可以拨打testfunc(4,5)
并进入浏览器。您可以打印此时想要的任何变量。请参阅?browser
帮助页面。
你能解释一下为什么你要这样做吗? – Dason
我想要一个简单的方法来为调试目的全局定义函数参数。 –
我还没有完全理解你想要做什么。但是,如果你能够更详细地解释这个问题,似乎可能有更好的方法来实现你的实际目标。 – Dason