【问题标题】:R error number of items to replace is not a multiple of replacement lengthR错误要替换的项目数不是替换长度的倍数
【发布时间】:2017-03-10 20:47:07
【问题描述】:

我尝试编写一个脚本,该脚本模拟 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 个或更多警告(使用 warnings() 查看前 50 个)

警告()

警告信息: 1: 在 cap[i] = cap[i] + sample(c(-1, 1), replace = TRUE, ... : 要替换的项目数不是替换长度的倍数

【问题讨论】:

    标签: r


    【解决方案1】:

    借助 sample():

    "对于样本,大小的默认值是从中推断出的项目数 第一个参数,以便 sample(x) 生成随机排列 x(或 1:x)的元素。”

    这就是您获得大小为 2 的样本的原因。您可能想要使用:

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

    【讨论】:

    • 不用担心。还请考虑接受对您的问题最有帮助的答案(请参阅 stackoverflow.com/help/someone-answers)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多