r - 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
,这样该函数将使用set
的wxy.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 = set
和m = z
. 出于这个原因,我想使用outer()
,但似乎不可能。
所以,我想这将涉及apply 系列之一或 apply 和 do.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
转置矩阵。
推荐阅读
- java - 渲染由三角形组成的立方体会在旋转时产生奇怪的角度
- mysql - MySQL 查询:如何在 Django 中编写?
- scala - 如何将参数传递给scala中的方法
- prometheus - Prometheus Docker 无法以`Template: (dynamic): parse: template: :10: undefined variable "$labels"` 开始
- gradle - Gradle:如何为发行版插件创建的 ZIP 文件生成 sha-256 哈希?
- c# - 如何获取可能为空的数据库字段的长度
- c# - 从纹理图集中在四边形网格中应用纹理
- javascript - react-select 中的“defaultValue”不选择下拉菜单中的选项,但“value”选择下拉菜单中的选项
- gremlin - 在 Gremlin 中,如何查询一个属性值大于另一个属性值的顶点?
- ruby - 如何使用 Ruby 在 DynamoDB 中添加字符串集