如何直接曲线函数闭包生成的函数?

时间:2017-12-07 16:13:49

标签: r

我想尝试像

这样的功能曲线
pow <- function(n) {
    function(x){ x^n }
}

当我弯曲它时使用下面的代码,一切都很好

f <- pow(2)
curve(f,-2,2)

但是当我用

曲线时
curve(pow(2),-2,2)

我收到错误消息&#34;&#39; expr&#39;必须是一个函数,或者包含&#39;&#39;&#34;的调用或表达式,我想知道如何在没有临时变量的情况下对其进行曲线化?

1 个答案:

答案 0 :(得分:4)

使用

curve(pow(2)(x),-2,2)

curve()的文档中,它需要

  

函数的名称,或作为x函数编写的调用或表达式,它将计算为与x相同长度的对象。

所以f是一个函数的名称,这就是为什么它起作用的原因。你也可以打电话给curve(f(x),-2,2)。但是pow(2)不是函数的名称,它是一个返回函数的函数调用。但是当curve看到一个函数调用时,它希望看到该调用是作为x的函数编写的。因此,通过添加(x)部分,我们将其转换为curve()理解的函数调用。