R:传递函数参数以覆盖内部函数的默认值

时间:2013-09-03 22:18:40

标签: r function override defaults

在R中,我想做这样的事情: 我有一个函数f1,它有一个带默认值的参数; K = 3。

f1 = function(x,k=3){
    u=x^2+k
    u
}

然后我定义了第二个函数f2,它调用f1。

f2 = function(z,s){
    s*f1(z)
}

允许f2用户覆盖内部函数f1中默认值k的最简洁方法是什么?一个简单的解决方案是将f2重新定义为:

f2 = function(z,s,K){
    s*f1(z,K)
}

但是,如果我处理大量的功能,我觉得这可能很麻烦。有什么建议?感谢。

1 个答案:

答案 0 :(得分:5)

处理此问题的最简单方法是使用...参数。这允许您将任意数量的附加参数传递给其他函数:

f1 = function(x,k=3){
    u=x^2+k
    u
}

f2 = function(z,s, ...){
    s*f1(z, ...)
}

您会看到这个函数通常用于调用其他具有许多可选参数的函数,例如plot