假设我在R中有两个数字函数,例如,cos和exp。有一个新的函数对象f(x)= cos(x)* exp(x)的最快方法是什么?我可以将其定义为
f <- function(x) {cos(x)*exp(x) }
但有一种简便的方法(例如f = cos * exp)
答案 0 :(得分: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
这具有可连锁的优势:
g <- cos %*f% exp %*f% log %*f% mean
g(x) # works appropriately