comparing a vector to a probability distribution

201 views Asked by At

I have a vector:

r <- runif(10)
r
[1] 0.52324423 0.89110751 0.44616915 0.70163640 0.63741495 0.31263977
[7] 0.73947973 0.83278799 0.04971461 0.01820381

I also have a probability distribution

p <- c(0, cumsum(rep(0.25, 4)))
p
[1] 0.00 0.25 0.50 0.75 1.00

I would like to assign factors to r based on the probability distribution in p.

In other words, I would like my output to be:

r
[1] 3  4  2  3  3  2  3  4  1  1

When I try this, I get a warning:

which( r >= p) -1
[1] 3
Warning message:
In r < p : longer object length is not a multiple of shorter object length

In other words, only the first value in r is compared to p.

How would I go about converting r into a vector of levels that I can then turn into factors?

1

There are 1 answers

0
Rorschach On BEST ANSWER

You can use cut

as.integer(cut(r, breaks=p))