Я думаю, у меня есть простая проблема, когда в моей реальной проблеме то, что иногда мой l oop получает не «положительно определенную» матрицу, и тогда я не могу генерировать случайные значения из нормального распределения с использованием этой матрицы в качестве параметра Scale. Итак, я изо всех сил пытаюсь вычислить это снова, пока не получу «положительно определенную». Я сделал простой пример, который может помочь:
test = function(a){
b = rnorm(1) + a
c = b - .5
return(c)
}
replicate(20,test(.5))
[1] 0.93297282 1.17247501 -0.06919809 0.71069048 -0.12760964 1.46818526 -1.34637900 0.85637634 -0.03191685
[10] 0.24198938 0.26555849 -0.47910932 0.11841441 1.92971628 -1.23540504 -0.07653842 -0.08895779 1.32780821
[19] -0.03604193 0.13845360
Предположим, я хочу, чтобы 'c' был положительным, и всякий раз, когда 'c' отрицателен, я хотел бы, чтобы 'b' генерировалось снова. Я знаю, что мы могли бы усечь, но в моем реальном случае мне нужно go вернуться назад и снова сгенерировать переменную 'b', пока у меня не будет 20 положительных значений для 'c'.
Любой намек на как я могу это сделать?