【发布时间】:2015-01-26 03:47:46
【问题描述】:
我是 R 中递归的新手。我正在尝试生成满足 R 中特定条件的指数随机变量。这是一个简单的示例,展示了我尝试生成两个独立的指数随机变量的尝试。
代码
#### Function to generate two independent exponential random variable that meet two criteria
gen.exp<-function(q1,q2){
a=rexp(1,q1) # generate exponential random variable
b=rexp(1,q2) # generate exponential random variable
if((a>10 & a<10.2) & (a+b>15)){ # criteria the random variables must meet
return(c(a,b))
}else{
return(gen.exp(q1,q2)) #if above criteria is not met, repeat the process again
}
}
示例:q1=.25,q2=2
gen.exp(.25,2)
当我运行上面的代码时,我得到以下错误:
- 错误:求值嵌套太深:无限递归/选项(表达式=)?
- 结束时出错:求值嵌套太深:无限递归/选项(表达式=)?
我已经尝试修改options(expressions=10000),以允许R增加迭代次数。这似乎对我的情况没有帮助(也许我没有正确使用该选项)。我理解生成具有上述严格标准的连续分布可能是问题所在。话虽如此,有没有办法避免错误?或者至少在发生错误时重复递归?递归在这里过度杀戮吗?是否有更简单/更好的方法来生成所需的随机变量?
我感谢任何见解。
【问题讨论】:
标签: r recursion random exponential-distribution