r语言 - 这种类型的数据输入背后的基本原理是什么



这个例子来自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, ...)

这与上面示例中描述的相同。

最新更新