我是 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 增加迭代次数。这似乎对我的情况没有帮助(也许我没有正确使用该选项)。我理解生成具有上述严格标准的连续分布可能是问题所在。话虽如此,有没有办法避免错误?或者至少在发生错误时重复递归?递归在这里过度杀戮吗?是否有更简单/更好的方法来生成所需的随机变量?我很欣赏任何见解。