应用于函数向量

Spa*_*man 11 r

给定一个函数的向量(实际上是一个列表):

 fs = c(sin, cos, tan)
Run Code Online (Sandbox Code Playgroud)

和一个值向量:

 xs = c(.1, .3, .5)
Run Code Online (Sandbox Code Playgroud)

是否有更好/更整洁/更快/更强的计算方法fs[[i]](xs[i])为每个向量元素:

 vapply(1:3, FUN.VALUE = 1 ,function(i){fs[[i]](xs[i])})
  [1] 0.09983342 0.95533649 0.54630249
Run Code Online (Sandbox Code Playgroud)

或者我在fapply某个地方错过了一个功能?函数将始终是单个标量值的函数并返回单个标量值.

Jos*_*ien 8

这是另一种替代方案,它相对于目前建议的主要优点是它不需要定义匿名函数.

mapply(do.call, fs, lapply(xs, list))
# [1] 0.09983342 0.95533649 0.54630249
Run Code Online (Sandbox Code Playgroud)


Rol*_*and 8

好又简单:

mapply(function(fun, x) fun(x), fs, xs)
Run Code Online (Sandbox Code Playgroud)

但我同意@flodel.我也在寻找一个基本功能,function(fun, ...) fun(...)并且惊讶于似乎没有.另一方面,到目前为止,我从未需要它.