我正在使用R建立数学模型。我想编写一个带有f(a, b, g)
3个参数的函数,最后一个是函数。我想知道我可以将一个函数作为参数传递给另一个函数吗?如果可能的话,你们能给我举个简单的例子吗?
向函数传递函数参数当然是合法的。许多基本的R函数都可以做到这一点。例如,
tapply(..., FUN)
您可以通过进行检查?tapply
。
事实是,您仅将函数名称视为符号。例如,在下面的玩具示例中:
foo1 <- function () print("this is function foo1!")
foo2 <- function () print("this is function foo2!")
test <- function (FUN) {
if (!is.function(FUN)) stop("argument FUN is not a function!")
FUN()
}
## let's have a go!
test(FUN = foo1)
test(FUN = foo2)
也可以通过函数参数foo1
或foo2
到test
,通过使用...
。我留给您做一些研究。
如果您熟悉C语言,那么就不难理解为什么这是合法的。R是用C编写的(尽管其语言语法属于S语言),因此本质上,这是通过使用函数指针来实现的。如果需要进一步了解,请参见C中的函数指针如何工作?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句