我写了下面的代码。目的是仅获得正数。因此,rnorm(5,2,2)
也可以产生负数,但我希望它只产生正数。为此,我在repeat
中使用了R
,但它无法正常工作。你有什么建议修理它?这是代码:
for (i in 1:5){
repeat{
x <- rnorm(5,2,2)
if ((length(which(x<0)))==0){break}
print(x)
}
}
答案 0 :(得分:3)
您的原始代码有效。您可能会对print(x)感到困惑,因为它不代表最终结果
repeat {
x <- rnorm(5,2,2)
if ((length(which(x<0)))==0){break}
}
x
答案 1 :(得分:2)
好吧,我不确定你为什么这样做或者你想要达到什么目标,但是如果你想从(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)
}