将变量分配到R中的某个范围
我尝试在R中运行以下算法:将变量分配到R中的某个范围,r,R,我尝试在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)
ascutPoints[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))