Устранение цикла while - PullRequest
2 голосов
/ 13 июля 2020

У меня есть этот код, и мне интересно, можно ли его выполнить без while l oop.

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

1 Ответ

2 голосов
/ 13 июля 2020

Вы можете определить рекурсивную функцию.

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
...