如何使用R中的repeat生成正数

时间:2013-01-25 21:14:21

标签: r function repeat

我写了下面的代码。目的是仅获得正数。因此,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)
}
}

2 个答案:

答案 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)
}