R - 如何在带有矢量给定参数的函数列表中运行每个函数

时间:2015-02-24 05:14:15

标签: r lambda functional-programming anonymous-function

假设我有一个函数列表和一个参数值向量:

functions <- list(a = function(x) x *2, b = function(x) x*3, c = function(x) x * 4)
paramVector <- c(2, 2, 1)

现在我希望以下功能使用相应的参数调用每个函数并将结果整理到向量中:

result <- c()
for (idx in 1:length(functions)) {
    result[idx] <- functions[[idx]](paramVector[idx])
}
result

如果没有for循环,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

要同时迭代functionsparamVector个对象,请使用Map。例如

Map(function(f,p) f(p), functions, paramVector)

请注意Map()始终返回一个列表。您还可以使用mapply()来尝试简化向量

mapply(function(f,p) f(p), functions, paramVector)