我写了下面的代码。目的是仅获得正数。所以,rnorm(5,2,2)
也可以产生负数,但我希望它只产生正数。为此,我使用repeat
了 in R
,但它不能正常工作。你有什么建议来修复它?这是代码:
for (i in 1:5){
repeat{
x <- rnorm(5,2,2)
if ((length(which(x<0)))==0){break}
print(x)
}
}
您的原始代码有效。您可能对不代表最终结果的 print(x) 感到困惑
repeat {
x <- rnorm(5,2,2)
if ((length(which(x<0)))==0){break}
}
x
好吧,我不确定你为什么这样做或者你想要达到什么,但是如果你想从(2,2)正态分布中迭代地采样 100 个值并重复直到所有值都是正的,你可以做一些事情像 :
v <- rnorm(100,2,2)
nb <- sum(v<0)
while (nb>0) {
v[v<0] <- rnorm(nb,2,2)
nb <- sum(v<0)
}