4

以下のコードを書きました。目的は、正の数のみを取得することです。したがって、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)
}
}
4

2 に答える 2

3

元のコードが機能します。おそらく、最終結果を表していない print(x) に混乱しているでしょう

repeat {
    x <- rnorm(5,2,2)
    if ((length(which(x<0)))==0){break}
}
x
于 2013-01-25T21:48:58.437 に答える
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)
}
于 2013-01-25T21:22:53.597 に答える