首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何多次迭代mapply

如何多次迭代mapply
EN

Stack Overflow用户
提问于 2020-10-01 03:50:56
回答 2查看 66关注 0票数 0

我正在进行Monty问题的模拟,并试图在R中求出置信区间的概率。

代码语言:javascript
复制
# set the door 
door <- c(1,2,3) 

# count success 
count <- 0

MontyHallchallenge3 <- function(a){
    for (i in 1:a) {
      car <- sample(door, 1)
      choice <- sample(door, 1)
      if(car == choice){
        host <- sample(setdiff(door, car), 1)
      }else{
        host <- setdiff(door, c(choice, car))
      }
      secondchoice <- setdiff(door, c(host, choice))
      if(secondchoice == car){
        count <- count + 1
      }
    }
    p = count/a
  return(mean(p))
}

b = c(2,10,100,1000)
mapply(MontyHallchallenge3, a = b)

A是一个样本大小,并将其作为参数传递给函数。给我a= 2,10,100,1000,我应该创建每个置信区间。现在,它只迭代一次并得到这些。

代码语言:javascript
复制
> mapply(MontyHallchallenge3, a = b)
[1] 0.500 0.800 0.660 0.642

我想迭代每一个样本1000次,以获得置信区间。有任何方法来设置mapply()中的迭代次数吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-01 03:58:27

您可以使用replicateb中的每个值迭代1000次,并取其mean

代码语言:javascript
复制
b = c(2,10,100,1000)
sapply(b, function(x) mean(replicate(1000, MontyHallchallenge3(x))))
票数 0
EN

Stack Overflow用户

发布于 2020-10-02 00:28:43

我们可以将replicatelapply结合使用

代码语言:javascript
复制
b <- c(2, 10, 100, 1000)
lapply(b, function(x) mean(replicate(1000, MontyHallchallenge3(x))))
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64148804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档