Я новичок в рекурсии в 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 = 0,25, q2 = 2
gen.exp(.25,2)
Когда я бегу выше код, я получаю следующие ошибки:
- Ошибка: оценка вложен слишком глубоко: бесконечная рекурсия/параметры (выражения =)?
- Ошибка во время обертывания: оценка вложен слишком глубоко: бесконечная рекурсия/параметры (выражения =)?
Я уже пробовал модифицировать options(expressions=10000)
и дать R увеличить количество итераций. Это, похоже, не помогает в моем случае (возможно, я не использую этот вариант правильно). Я понимаю, что генерирование непрерывных распределений с жесткими критериями, как и выше, может быть, проблема. Сказав это, есть ли способ избежать ошибок? Или, по крайней мере, повторять рекурсию всякий раз, когда возникает ошибка? Рекурсия здесь убита? Существуют ли более простые/лучшие способы генерации желаемых случайных величин? Я ценю любые идеи.
Что говорит Роланд. Вообще говоря, я использую рекурсию, когда вход функции function_call_16 зависит от результата функции_call_15 и т. Д. И т. Д. Здесь дело не в этом. О параметре выражения; вы используете его правильно, вы, очевидно, бегаете в установленный вами предел (или жесткий диск 500000 вложенных оценок). –