这个例子来自rootsolve包:
我们有这个功能:
gradient(f, x, centered = FALSE, pert = 1e-8, ...)
其中 f 是一个函数,x 是向量的数据输入
现在,下面是正在运行的代码的实例:
logistic <- function (x, times) {
with (as.list(x),
{
N <- K / (1+(K-N0)/N0*exp(-r*times))
return(c(N = N))
})
}
# parameters for the US population from 1900
x <- c(N0 = 76.1, r = 0.02, K = 500)
# Sensitivity function: SF: dfi/dxj at
# output intervals from 1900 to 1950
SF <- gradient(f = logistic, x, times = 0:50)
我的问题是代码如何理解在其例程中使用times
。它不是全局定义的,也不是函数输入列表的一部分。当函数的结构中未定义时,是否可以将输入传递给函数?...
在这里发挥作用吗?
...
只是获取额外参数并将它们传递给另一个函数的一种方式。
简单的例子:
power.function <- function(x,power) { x^power }
apply.function <- function(f, data, ...) { f(data, ...) }
sample <- c(1,2,3)
apply.function (power.function, sample, power = 3)
# which is the same as
apply.function (power.function, sample, 3)
生产
> apply.function (power.function, sample, 3)
[1] 1 8 27
编辑
为了清楚起见,如果您查看rootSolve::gradient
的来源,您将看到定义为
function (f, x, centered = FALSE, pert = 1e-08, ...)
并进一步向下调用
reff <- f(x, ...)
这与上面示例中描述的相同。