将变量分配给R中的范围

时间:2015-03-11 06:08:19

标签: r

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

  1. 生成一个统一的随机变量,u
  2. 求F(x(i-1))< u< = F(x(i))
  3. return x = x(i)
  4. 在我的情况下,我将我的F(x)分段,以便它由:

    给出
    cdf:
    [1] 0.0000000000 0.0001524158 0.0025910684 0.0196616369 0.0879439110 
        0.2586495961 0.5317786923 0.8049077884 0.9609815577 1.0000000000
    

    所以例如F(x(1))= cdf [2]

    然后我生成一个随机制服的载体:

     u<-c(runif(10000,0,1))
    

    但我无法将该向量中的每个元素分配到'cdf'中的特定范围。我已经尝试了一个带有许多if语句的for循环,但这很乏味且容易出错。

    我还使用while语句尝试了以下内容:

     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])}
     }
    

    有什么建议吗?

1 个答案:

答案 0 :(得分:2)

我认为你想使用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))

请注意,(可选)参数labels的长度比切割点b / c小一些,标签标记切割点之间的空间。有关详细信息,请参阅?cut