我找到了使用这样的伪代码将缺少的参数传递给具有默认值的函数的解决方案:
wrapperfX<-function(x)
{
...<-if(missing(x){
list()
}else{
list(x=x)
}
targetf(...)
}
Run Code Online (Sandbox Code Playgroud)
R中允许这些东西多少钱?
您正在寻找的技巧可能是使用do.call,它允许您调用函数并将参数指定为列表:
wrapperfX <- function(x){
dots<-if(missing(x)){
list()
}else{
list(x=x)
}
do.call(targetf,dots)
}
Run Code Online (Sandbox Code Playgroud)
如果列表元素具有名称,则允许您指定命名参数.
> do.call(log,list(x=10,base=10))
[1] 1
Run Code Online (Sandbox Code Playgroud)
相当于
log(x=10,base=10)
Run Code Online (Sandbox Code Playgroud)
如果你调用的函数是用点 - 点表示的,那么我将匹配参数,就像你将它们放在函数调用中一样.
[你也有一个缺失的括号,恰当地,missing((x){:)]