我有两个清单。一个包含函数funcsList,每个函数接受一个参数,另一个包含参数argsList。 在第一个列表中调用每个函数的最佳(最有效)方法是什么,在第二个列表中的每个参数上 我想我可以在for循环中做到这一点,但我认为可能有一种更好(更平行)的方式。
每个函数定义为followis funcN< - function(arg){...}
因此,如果我在第一个列表中有3个函数,在第二个列表中有2个参数,则结果应包含6个元素的列表或大小为3 * 2的矩阵
答案 0 :(得分:3)
如果我理解正确,你有两个列表,如
f<-list(sum, mean, median)
v<-list(1:3, 10:20)
您可以使用
获取两者的所有组合outer(f,v, Vectorize(function(a,b) a(b)))
# [,1] [,2]
# [1,] 6 165
# [2,] 2 15
# [3,] 2 15
outer
负责将f
值与v
值相匹配,Vectorize
确保只传递一个函数a
每一次。
答案 1 :(得分:2)
这里的一些示例代码非常有用,但这是一种使用sapply
arglist <- list(one = rnorm(20),
two = runif(20))
funclist <- list(mean,sd,var)
sapply(funclist,function(f) sapply(arglist,f))
[,1] [,2] [,3]
one 0.1714100 0.8971787 0.8049297
two 0.5062332 0.3339033 0.1114914