【发布时间】:2021-04-08 16:40:53
【问题描述】:
我无法弄清楚我的代码有什么问题。基本上我正在尝试做一个小版本的蒙特卡罗模拟。
这是我的意见
mydata=[1,4,20,23,37]
prediction=c(0,0,0,0,0,0,0,0,0,0,0,0)
randomvar=runif(12,0,1)
然后我有这个条件:
如果
randomvar的第i个值> 0.97,则将prediction的第i个值替换为mydata的第5个数据
否则,如果
randomvar的第i个值> 0.93,则将prediction的第i个值替换为mydata中的第4个数据
否则,如果
randomvar的第 i 个值 > 0.89,则将prediction的第 i 个值替换为来自mydata的第三个数据
如果
randomvar的第i 个值> 0.85,则将prediction的第i 个值替换为mydata中的第二个数据
如果
randomvar的第i个值> 0.81,则将prediction的第i个值替换为mydata的第一个数据
否则 0
所以我写了这个:
mydata=c(1,4,20,23,37)
prediction=c(0,0,0,0,0,0,0,0,0,0,0,0)
random=runif(12,0,1)
for (i in random) {
if (i>0.97) prediction[i]=mydata[5]
else if (i>0.93) prediction[i]=mydata[4]
else if (i>0.89) prediction[i]=mydata[3]
else if (i>0.85) prediction[i]=mydata[2]
else if (i>0.81) prediction[i]=mydata[1]
else prediction[i]=0
}
prediction
结果是
> prediction
[1] 0 0 0 0 0 0 0 0 0 0 0 0
我想知道为什么代码不会根据上述条件更改预测值。谁能帮忙解释一下原因?反正我是 R 新手
【问题讨论】:
标签: r for-loop if-statement montecarlo