2016-04-04 120 views
-2

我使用R来构建数学模型。我想写一个函数f(a, b, g),它需要3个参数,最后一个是函数。我想知道我是否可以将一个函数作为参数传递给另一个函数?如果这是可能的,你们能给我一个简单的例子吗?谢谢。R语言,我们是否可以传递一个函数作为参数

+1

功能? http://adv-r.had.co.nz/Functionals.html – Laterow

+0

是的。对于接受其他函数作为参数的一些R函数,请参阅'?optim'和'?integrate'的Examples部分。 –

回答

5

将函数传递给函数参数当然是合法的。许多基本的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) 

它也可以的foo1foo2函数参数传递给test,通过使用...。我留下这个让你有一些研究。


如果您熟悉C语言,那么不难理解为什么这是合法的。 R是用C编写的(尽管它的语言语法属于S语言),所以基本上这是通过使用指向函数的指针来实现的。如果您想了解更多信息,请参阅How do function pointers in C work?

相关问题