假设我在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)
如果你这么做了,你可以定义一个二元运算符:
"%*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)