将变量分配到R中的某个范围

将变量分配到R中的某个范围,r,R,我尝试在R中运行以下算法: 生成一个统一的随机变量u 查找F(x(i-1))

我尝试在R中运行以下算法:

  • 生成一个统一的随机变量u

  • 查找F(x(i-1))cut(),如下所示:

    cutPoints  <-  c(0.0000000000,# could set to -1.  See comment below.
                    0.0001524158,
                    0.0025910684,
                    0.0196616369,
                    0.0879439110,
                    0.2586495961,
                    0.5317786923,
                    0.8049077884,
                    0.9609815577,
                    1.0000000000)
    u  <-  runif(1000)
    cut(u,
        cutPoints,
        labels = seq.int(length(cutPoints)-1))
    

    cutPoints您可能需要设置
    cutPoints[1]@r2evans我明白您的意思了。(见回复中添加的评论)。然而,(从技术上讲,令人讨厌的是,
    runif()
    返回零的概率是
    .Machine$$double.xmin
    ,这在我的机器上是
    2.225074e-308
    ,实际上是零…所以你是说有机会。。。(我考虑过了……并发表了评论,可能部分是因为我离发布我自己的答案还有3秒钟;-)酷,这实际上是一个很好的评论b/c(根据我的经验)很多人(包括我自己)有时使用
    min(u)
    as
    cutPoints[1]
    并且当
    cut()返回的向量中缺少值时,会感到困惑。
    。。。(哦,是的,我捕获了Dumb和Dumber引用…)当我运行带有标签的代码时,我得到一个错误,即中断长度和标签长度不相同。我在没有标签的情况下运行它,所以这会将u的每个元素分配到切点中的一个范围中。我希望做的是将u中的每个元素分配给区间的索引,例如区间(0.532,0.805)对应于6。
     u<-c(runif(10000,0,1))
    
     x<-u
     for(i in (1:length(u))){
       for(j in (1:length(cdf)))
          while(x[i]<cdf[j]){x[i]==which(cdf[j]>=x[i])}
     }
    
    cutPoints  <-  c(0.0000000000,# could set to -1.  See comment below.
                    0.0001524158,
                    0.0025910684,
                    0.0196616369,
                    0.0879439110,
                    0.2586495961,
                    0.5317786923,
                    0.8049077884,
                    0.9609815577,
                    1.0000000000)
    u  <-  runif(1000)
    cut(u,
        cutPoints,
        labels = seq.int(length(cutPoints)-1))