【发布时间】:2020-08-06 15:00:16
【问题描述】:
我想我有一个简单的问题,在我真正的问题中,有时我的循环得到了一个非“正定”矩阵,然后我无法使用这个矩阵作为 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”。我知道我们可以截断,但在我的实际情况中,我需要返回并再次生成变量 'b',直到获得 'c' 的 20 个正值。
任何提示我该怎么做?
【问题讨论】:
-
我猜你需要一个
repeat或while循环。
标签: r loops while-loop replication do-while