乘法函数

Ben*_*Ben 2 r function

假设我在R中有两个数字函数,例如,cos和exp.有一个新的函数对象f(x)= cos(x)*exp(x)的最快方法是什么?我可以将其定义为

f <- function(x) {cos(x)*exp(x) }
Run Code Online (Sandbox Code Playgroud)

但有没有这样做的简写方法(例如f = cos*exp)

Gre*_*gor 5

如果你这么做了,你可以定义一个二元运算符:

"%*f%" = function(x, y) {
    force(x)
    force(y)
    function(z) x(z) * y(z)
}

f = cos %*f% exp
x = runif(10)

> identical(f(x), cos(x) * exp(x))
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

这具有可链式的优点:

g <- cos %*f% exp %*f% log %*f% mean
g(x) # works appropriately
Run Code Online (Sandbox Code Playgroud)