R要替换的项目的错误数不是替换长度的倍数

R要替换的项目的错误数不是替换长度的倍数,r,R,我试着写一个脚本,模拟100次抛硬币,有一定的成功概率,一个起始资本和一定数量的资本来停止游戏“l”。它返回成功的概率。代码可以工作,但返回错误消息。有人能帮我吗?提前谢谢 spins=100 SuccessVector=c() ProbSuccess<-function(p, capital, l){ for(i in 1:spins){ cap=rep(capital,spins) while(cap[i]>0 & cap[i]<l){ cap[i]=cap[i]+

我试着写一个脚本,模拟100次抛硬币,有一定的成功概率,一个起始资本和一定数量的资本来停止游戏“l”。它返回成功的概率。代码可以工作,但返回错误消息。有人能帮我吗?提前谢谢

spins=100
SuccessVector=c()
ProbSuccess<-function(p, capital, l){
for(i in 1:spins){
cap=rep(capital,spins)
while(cap[i]>0 & cap[i]<l){
cap[i]=cap[i]+sample(c(-1,1), replace = TRUE, prob= c(1-p,p))
if(cap[i]==l){SuccessVector[i]=1}
else(SuccessVector[i]=0)
}
}
successes=length(SuccessVector[SuccessVector==1])/length(SuccessVector)
return(successes)
}
ProbSuccess(0.5,10,20)
有50个或更多警告使用警告查看前50个

警告

警告信息: 1:在cap[i]=cap[i]+样本C-1中,1,replace=TRUE,…: 要替换的项目数不是替换长度的倍数


借助示例:

对于示例,大小的默认值是从中推断的项目数 第一个参数,以便samplex生成一个随机排列 x或1:x的元素的

这就是为什么你会得到2号的样品。您可能需要使用:

cap[i]=cap[i]+sample(c(-1,1), size=1 , replace = TRUE, prob= c(1-p,p))

别担心。也请考虑接受你的问题最有用的答案见STACKOFFROUT.COM/HELPL/NOTHONE答案。