将函数列表应用于R中的单个参数

将函数列表应用于R中的单个参数,r,R,嗨,我正在尝试将函数列表应用于R中的单个参数。例如 flist <- list(F,G,H) #F,G,H are function objects flistf实现这一点的最有效方法(似乎)是使用一个lappy(而不是3个不同的函数),例如 myscalarMap(function(f,x){f(x)},flist,3)是另一个选项(3只是我选择的一个任意标量)。再看看@NickD1,Vectorize只是mapply的包装器,所以我不会将它与outer结合使用。你可以使用nrusse

嗨,我正在尝试将函数列表应用于R中的单个参数。例如

flist <- list(F,G,H) #F,G,H are function objects
flist
f实现这一点的最有效方法(似乎)是使用一个
lappy
(而不是3个不同的函数),例如


myscalar
Map(function(f,x){f(x)},flist,3)
是另一个选项(
3
只是我选择的一个任意标量)。再看看@NickD1,
Vectorize
只是
mapply
的包装器,所以我不会将它与
outer
结合使用。你可以使用nrussells解决方案,或者我的(可能是最快的)我认为Lappy版本是最干净的,我自己。你应该解释代码的作用以及函数的作用。好的,前4行只是设置示例。让我们假设我来自搜索引擎,通过阅读一段没有任何解释的代码,我不会学到很多东西。我明白,但是
R
为每个函数都提供了(非常)丰富的手册页集,几乎每个函数都可以方便地命名。例如,
?sapply
?do.call
。我能给出的任何解释都会对这些手册页造成不公正:-)谢谢,这是这里的推荐做法:简洁是可以接受的,但更完整的解释更好,请参阅文档:
f <- function(x) x^1
g <- function(x) x^2
h <- function(x) x^3
l <- list(f, g, h)

sapply(l, do.call, list(2))
## [1] 2 4 8
flist <- list(mean, unique, max) # Example functions list
MyScalar <- 1 # Some scalar
lapply(flist, function(f) f(MyScalar))
# [[1]]
# [1] 1
# 
# [[2]]
# [1] 1
# 
# [[3]]
# [1] 1
vapply(flist, function(x) x(MyScalar), FUN.VALUE = double(1))
## [1] 1 1 1