-2
我使用R来构建数学模型。我想写一个函数f(a, b, g)
,它需要3个参数,最后一个是函数。我想知道我是否可以将一个函数作为参数传递给另一个函数?如果这是可能的,你们能给我一个简单的例子吗?谢谢。R语言,我们是否可以传递一个函数作为参数
我使用R来构建数学模型。我想写一个函数f(a, b, g)
,它需要3个参数,最后一个是函数。我想知道我是否可以将一个函数作为参数传递给另一个函数?如果这是可能的,你们能给我一个简单的例子吗?谢谢。R语言,我们是否可以传递一个函数作为参数
将函数传递给函数参数当然是合法的。许多基本的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语言),所以基本上这是通过使用指向函数的指针来实现的。如果您想了解更多信息,请参阅How do function pointers in C work?
功能? http://adv-r.had.co.nz/Functionals.html – Laterow
是的。对于接受其他函数作为参数的一些R函数,请参阅'?optim'和'?integrate'的Examples部分。 –