r - 如何多次迭代mapply
问题描述
我正在做一个蒙蒂霍尔问题模拟,并试图在 R 中获得置信区间的概率。
# 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,我应该创建每个置信区间。现在,它只迭代一次并得到这些。
> mapply(MontyHallchallenge3, a = b)
[1] 0.500 0.800 0.660 0.642
我想为每个样本迭代 1000 次以获得置信区间。有没有办法在mapply()中设置迭代次数?
解决方案
您可以使用replicate
对每个值迭代 1000 次b
并获取mean
它。
b = c(2,10,100,1000)
sapply(b, function(x) mean(replicate(1000, MontyHallchallenge3(x))))
推荐阅读
- ios - Xcode 中的构建错误。链接有问题
- docker - 在 Apache Ignite 上为 Docker 启动 WebAgent
- php - 格式错误的 EUR 字符串
- java - 使用 CompareTo 时将字符串转换为长整数
- linux - c++线程不能重用main分配的释放内存
- json - JSON4S 无法反序列化对象
- python - 以指定格式填充缺失值 - Python
- ethereum - 外部函数中参数的数据位置必须是“calldata”,但没有给出
- xamarin - 如何使用 Xamarin.Forms 中的样式和动态资源正确更新控件的字体大小?
- android - Android中有没有办法获取当前的硬件键盘修改状态?