【问题标题】:understand and modify previous R code理解和修改以前的 R 代码
【发布时间】:2017-06-09 18:31:29
【问题描述】:

我是 R 环境的新手,希望了解发布在另一个线程中的代码。

Integrating over a PCHIP Function

1 > library(pracma)
2 > xs <- linspace(0, pi, 10)
3 > ys <- sin(xs)
4 > pchipfun <- function(xi, yi) function(x) pchip(xi, yi, x)
5 > f <- pchipfun(xs, ys)
6 > integrate(f, 0, pi)

我的问题如下:

  1. 第 5 行正在调用第 4 行中的函数,但这并没有传递 x 值。那么第4行怎么取x值呢?

  2. 在上面的设置中,我想修改一下,如果 x 在 pi/6 和 pi/4 之间,函数应该返回 0,否则返回计算值。

提前致谢。

【问题讨论】:

  • 函数pchipfun()返回一个函数(定义)。调用构造函数f时需要x值。函数integrate 在里面调用f(x)
  • (1) 我明白了,集成函数在调用f(x),但是第5行没有x。
  • (2)如何修改代码?
  • pchipfun &lt;- function(xi, yi) function(x) { if (x&lt;pi/6) return(0); if (x&gt;pi/4) return(0); pchip(xi, yi, x) } 但是为什么不简单地限制集成:integrate(f, pi/6, pi/4) 与原始函数定义?
  • 其实我用它作为参考代码,但我对集成不感兴趣。我想绘制曲线,但它仍然给我错误:在 if (x 1,并且只会使用第一个元素

标签: r


【解决方案1】:

对于问题 1,您可以阅读有关 Currying 的内容:

https://en.wikipedia.org/wiki/Currying

对于问题2,也许你可以先粘贴你尝试过的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2020-07-30
    • 1970-01-01
    相关资源
    最近更新 更多