【问题标题】:R: how to pass functions as arguments to another functionR:如何将函数作为参数传递给另一个函数
【发布时间】:2013-07-20 04:02:48
【问题描述】:

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

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

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

【问题讨论】:

    标签: r


    【解决方案1】:

    只需编写自己的函数:

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

    【讨论】:

    • 也就是说,你想要(数学上)相加的是函数(sin(x)cos(x))的结果,而不是函数本身。
    猜你喜欢
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 2013-04-13
    • 2017-08-07
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多