4

在 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)
}

但是,如果我要处理大量的函数层次结构,我觉得这可能会很麻烦。有什么建议么?谢谢。

4

1 回答 1

5

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

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

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

您将看到这通常用于使用许多可选参数调用其他函数的函数中,例如plot.

于 2013-09-03T22:43:40.797 回答