R での再帰は初めてです。R で特定の条件を満たす指数確率変数を生成しようとしています。2 つの独立した指数確率変数を生成する試みを示す簡単な例を次に示します。
コード
#### 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=)?
- ラップアップ中のエラー: 評価の入れ子が深すぎます: 無限再帰 / options(expressions=)?
options(expressions=10000)
Rが反復回数を増やすことができるようにするために、私はすでに修正を試み ました。それは私の場合には役に立たないようです(オプションを正しく使用していない可能性があります)。上記のような厳しい基準で連続分布を生成することが問題である可能性があることを理解しています。そうは言っても、エラーを回避する方法はありますか? または、少なくともエラーが発生するたびに再帰を繰り返しますか? ここで再帰はオーバーキルですか?目的の確率変数を生成するためのより簡単で優れた方法はありますか? 洞察に感謝します。