我有一个矢量:
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
我也有概率分布
p <- c(0, cumsum(rep(0.25, 4)))
p
[1] 0.00 0.25 0.50 0.75 1.00
我想根据p。
中的概率分布为r分配因子换句话说,我希望我的输出是:
r
[1] 3 4 2 3 3 2 3 4 1 1
当我尝试这个时,我收到一个警告:
which( r >= p) -1
[1] 3
Warning message:
In r < p : longer object length is not a multiple of shorter object length
换句话说,只将r中的第一个值与p进行比较。
我如何将r转换为水平向量,然后我可以转化为因子?
答案 0 :(得分:1)
您可以使用cut
as.integer(cut(r, breaks=p))