以下のコードを書きました。目的は、正の数のみを取得することです。したがって、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)
}
}
元のコードが機能します。おそらく、最終結果を表していない 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)
}