我怎样才能做类似双多项式的事情?
我有这个:
b <- function(ftn){2*ftn}
b(function(x) x)
但是我在 2 * ftn 中得到错误:二进制运算符的非数字参数
我可以做某种 x <-2x 替换吗?
对不起,我是一个完整的初学者。
是的,但是您可以通过返回一个匿名函数来获取x
值、调用ftn
并应用转换。例如f(x) ↦ 2f(x)
:
> doublePoly <- function(ftn) { function(x) { 2 * ftn(x) } }
> f <- function(x) {x^2 + 1}
> g <- doublePoly(f)
> c(f(1), g(1))
[1] 2 4
> c(f(3), g(3))
[1] 10 20
可以使用这种技术进行任意转换,例如乘以1+x
:
mult.1plusx <- function(ftn) { function(x) { (1+x) * ftn(x) } }
或添加exp(x)
到函数的对数:
exp.plus.log <- function(ftn) { function(x) { exp(x) + log(ftn(x)) } }