首页 > 解决方案 > R:为多个不同变化的参数评估函数

问题描述

我有一个带有 4 个参数的函数:

    my.function <- function(w,x,y,z){
       w + x + y + z
    }

我可以给这个函数多个值z

> my.function(1,1,1,1:5)
[1] 4 5 6 7 8

但是,如果我想给出 的值的函数列表和 的值w,x,y的向量z,这样该函数将使用setwxy.args每个元素来评估每个z

wxy.args <- list(set1 = list(w = 1.1, x = 2.1, y = 3.1),
                 set2 = list(w = 1.2, x = 2.2, y = 3.3),
                 set3 = list(w = 1.3, x = 2.3, y = 3.3))
z <- 1:5

理想情况下,我想得到一个n x m矩阵, wheren = setm = z. 出于这个原因,我想使用outer()但似乎不可能

所以,我想这将涉及apply 系列之一或 apply 和 do.call 的某种组合,但我正在努力解决它。

提前致谢!

标签: rfunctionapplydo.call

解决方案


您可以使用它mapply来迭代您的集合。它遍历列表元素。我do.call用来将子列表传递给my.function

mapply(function(...) do.call(my.function, c(list(z = z), ...)), 
   wxy.args)
#     set1 set2 set3
#[1,]  7.3  7.7  7.9
#[2,]  8.3  8.7  8.9
#[3,]  9.3  9.7  9.9
#[4,] 10.3 10.7 10.9
#[5,] 11.3 11.7 11.9

如有必要,用于t转置矩阵。


推荐阅读