gpt4 book ai didi

R:使用带有附加列表的 mapply 作为参数

转载 作者:行者123 更新时间:2023-12-01 11:12:01 24 4
gpt4 key购买 nike

我有以下参数列表和向量:

myList <- list(c(3, 0, 1), c(2, 2, 2))
vPar1 <- c(1, 5, 100)
vPar2 <- c(100, 5, 1)

我正在尝试从 3 Beta 中抽取样本具有形状参数的分布 shape1 = vPar1shape2 = vPar2 (元素方面)。

预期结果将是一个包含两个元素的列表:第一个元素将由 4 个随机数组成(3 个来自 Beta(1, 100),1 个来自 Beta(100, 1) 分布),而第二个列表元素将由总共 6 个随机数组成(每个 Beta(1, 100)Beta(5, 5)Beta(100, 1) 分布的 2 个随机数)。

我尝试使用 mapply 产生所需的结果即循环遍历 3 个参数的元素,但我无法弄清楚应该如何准确使用它:
mapply(function(x, shape1, shape2) {unlist(rbeta(x, shape1, shape2))}, 
myList,
MoreArgs = list(shape1 = vPar1, shape2 = vPar2),
SIMPLIFY = FALSE)

这会产生一个包含两个元素的列表,但每个元素有 3 个随机数,分别插入预期的 4 个和 6 个数字。如有任何建议,我将不胜感激!谢谢。

最佳答案

一种选择是循环遍历 listlapply然后将“vPar1”和“vPar2”作为嵌套 Map 中的参数应用内lapply

lapply(myList, function(x) unlist(Map(rbeta, n = x, shape1 = vPar1, shape2 = vPar2)))
#[[1]]
#[1] 0.031955823 0.001533638 0.012877288 0.998004973

#[[2]]
#[1] 0.021860350 0.002145949 0.514477229 0.479578366 0.996876238 0.992356962

也可以写成
lapply(Map(Vectorize(rbeta), myList, MoreArgs = list(shape1 = vPar1, 
shape2 = vPar2)), unlist)

关于R:使用带有附加列表的 mapply 作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59040178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com