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

6
假设我想要集成一些涉及用户定义函数之和和积的函数。让我们以一个极其简单的例子为例,它会给出相同的错误。
integrate(f = sin + cos, lower=0, upper=1)

这会导致“sin + cos中的错误:二进制运算符的非数字参数”,我认为这是在说没有给函数传递参数就不能将它们加在一起。所以我有些困惑。 这个线程提出了一个我认为可以应用于这里的更复杂问题的解决方案,但对于这种简单任务来说,它似乎有些冗长。实际上,我有点惊讶地发现在帮助手册中找不到将函数参数传递给函数的方法,所以我想我可能没有使用正确的术语。
2个回答

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)

2
也就是说,你想要相加的(数学上的)结果是函数(sin(x)cos(x))的结果,而不是函数本身。 - Brian Diggs

1

这是一个老问题,但我最近也遇到了一些困难,所以在这里提供一个简单的例子,以帮助未来的其他人。@joran的答案仍然是最好的。

定义你的第一个函数:f1 <- function(x){return(x*2)}

测试它:f1(8)(期望 8*2=16); 返回 [1] 16

定义你的第二个函数:f2 <-function(f, y){return(f+y)}

测试它:f2(f=f1(8), y=1)(期望 8*2 = 16 +1 = 17); 返回 [1] 17


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接