在达到某个结果时终止的循环

时间:2017-05-23 02:38:58

标签: r

我正在尝试从0到36的序列中进行采样。但是如果采样0,我希望循环终止。这是我到目前为止所做的,它不起作用,

x <- seq ( 0, 36, by=1 )
for ( i in 1:100) {
x<- sample (x, 1, replace = F, prob=NULL)
if (x[i] == 0){
break
}
print("x[i]")
}

谢谢,Pilara

2 个答案:

答案 0 :(得分:1)

您必须将采样过程的所有结果存储在矢量中。你可以这样做:

set.seed(12345)                 # Set seed to make results reproducible. 
                                # Change the seed for different random numbers
x <- seq(0, 36, by = 1)
y <- sample(x, 1)               # Initialize vector of sampling results
while (tail(y, 1) != 0){
    y <- c(y, sample(x, 1))     # Append results to vector  
}
> y
#  [1] 26 32 28 32 16  6 12 18 26 36  1  5 27  0

答案 1 :(得分:1)

我只是稍微调整你的代码。只需使用另一个变量进行存储。

x <- seq ( 0, 36, by=1 )
y <- c()
for ( i in 1:100) {
    y[i]<- sample (x, 1, replace = F, prob=NULL)
    if (y[i] == 0){
       break
     }
print(y[i])
}

希望这有帮助。