【发布时间】:2013-01-25 21:14:20
【问题描述】:
我写了下面的代码。目的是仅获得正数。所以,rnorm(5,2,2) 也可以产生负数,但我希望它只产生正数。为此,我在R 中使用了repeat,但它无法正常工作。你有什么建议来修复它?代码如下:
for (i in 1:5){
repeat{
x <- rnorm(5,2,2)
if ((length(which(x<0)))==0){break}
print(x)
}
}
【问题讨论】:
-
您想要一个平均值为 2 且标准差为 2 但没有负数的正态分布?这听起来不再像正态分布了......为什么不
x <- rnorm(50, 2, 2); x[x > 0][1:5]或者如果你真的不关心分布:abs(rnorm(5, 2, 2))! -
我对分发不感兴趣。这只是一个示例,以便我可以将代码调整为我的项目。
-
也许我误解了你想要做什么,但你的代码工作正常。您最终会得到一个没有负值的变量 x。 (虽然 for 循环是不必要的,但 print(x) 并不表示您的最终结果,这可能会让您感到困惑。
-
@DunderChief,我仍然看到负值。它只产生正值吗?如果有,可以在这里分享一下吗?
-
我猜问题出在
for和print。我得到了我想要的。干杯:)