Lin*_*yin 2 r higher-order-functions
我正在使用R来构建数学模型.我想写一个函数f(a, b, g),它接受3个参数,最后一个是函数.我想知道我可以将函数作为参数传递给另一个函数吗?如果这是可能的,你们能给我一个简单的例子吗?谢谢.
将函数传递给函数参数当然是合法的.许多基本R函数都是这样做的.例如,
tapply(..., FUN)
Run Code Online (Sandbox Code Playgroud)
你可以检查一下?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)
Run Code Online (Sandbox Code Playgroud)
也可以通过函数参数foo1或foo2到test,通过使用....我留下这个给你做一些研究.
如果您熟悉C语言,那么理解为什么这是合法的并不难.R是用C语言编写的(虽然它的语言语法属于S语言),所以基本上这是通过使用函数指针来实现的.如果您想了解更多信息,请参阅C中的函数指针如何工作?
| 归档时间: |
|
| 查看次数: |
1317 次 |
| 最近记录: |