R:如何将函数作为参数传递给另一个函数

时间:2013-07-19 20:00:32

标签: r

假设我想要集成一些涉及一些其他用户定义函数的和和产品的函数。让我们举一个非常简单的例子,它会给出同样的错误。

integrate(f = sin + cos, lower=0, upper=1)

这会产生“sin + cos中的错误:二元运算符的非数字参数”,我认为只是将函数添加到一起而不传递某种参数是没有意义的。所以我有点卡在这里。 This thread提出了我认为可以在这里应用的更复杂问题的解决方案,但在这种情况下,这似乎很简单。我真的很惊讶我无法在帮助手册中找到函数的函数参数,所以我认为我没有使用正确的术语。

1 个答案:

答案 0 :(得分:8)

只需编写自己的函数:

> integrate(f = function(x) sin(x) + cos(x), lower=0, upper=1)
1.301169 with absolute error < 1.4e-14

在这个例子中,我使用了匿名函数,但这不是必需的。关键是编写一个函数来表示要集成的任何函数。在这种情况下,函数应该采用向量输入并添加每个元素的sin和cos。

同样地,我们可以做到:

foo <- function(x){
    sin(x) + cos(x)
}
integrate(f = foo, lower=0, upper=1)