2013-07-19 114 views
3

假设我想集成一些涉及其他一些用户定义函数的和和乘积的函数。让我们举一个非常简单的例子,它给出了同样的错误。R:如何将函数作为参数传递给另一个函数

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

这就产生了“罪恶+ COS错误:非数值参数二元运算符”我认为这是说它没有意义,只是添加功能结合在一起不用将它们某种说法。所以我有点卡在这里。 This thread构成了我认为解决更复杂的问题的方法,可以在这里应用,但在这种情况下,这似乎很长时间。我实际上有点惊讶,我无法在帮助手册中找到函数的传递函数参数,所以我认为我没有使用正确的术语。

回答

7

只写你自己的函数:

> 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) 
+2

也就是说,要一起(数学)附加的功能是什么的结果('的sin(x)'和'COS(X) '),而不是功能本身。 –

相关问题