消除while循环

时间:2020-07-13 04:43:33

标签: r performance loops

我有这段代码,我想知道它是否可以在不使用while循环的情况下执行。

quantity <- vector()        
while (length(quantity) < 2) {                
       Random <- runif(10, 0, 1)                   
       quantity <- which(Random < 0.3)        
}
quantity 

1 个答案:

答案 0 :(得分:2)

您可以定义一个递归函数。

set.seed(42)
foo <- function() {
  random <- runif(10, 0, 1)
  quantity <- which(random < .3)
  if (length(quantity) >= 2) return(quantity)
  else return(foo())
}
foo()
# [1] 3 8

检查:

set.seed(42)
quantity <- vector()        
while (length(quantity) < 2) {                
  Random <- runif(10, 0, 1)                   
  quantity <- which(Random < 0.3)        
}
quantity 
# [1] 3 8