示例来自 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
。它没有全局定义,也不是函数输入列表的一部分。当输入未在其结构中定义时,是否可以将输入传递给函数? ...
在这里发挥作用吗?
答案 0 :(得分:3)
...
只是一种获取额外参数并将它们传递给另一个函数的方法。
简单示例:
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, ...)
与上面示例中描述的相同。