Saltar al contenido

bucle do-while en R

Tenemos la mejor solución que descubrimos en internet. Nuestro deseo es que te sirva de ayuda y si puedes comentarnos algo que nos pueda ayudar a mejorar siente la libertad de hacerlo..

Solución:

Bastante autoexplicativo.

repeat
  statements...
  if(condition)
    break
  

O algo así, pensaría yo. Para obtener el efecto del ciclo do while, simplemente verifique su condición al final del grupo de declaraciones.

Ver ?Control o la definición del lenguaje R:

> y=0
> while(y <5) print( y<-y+1) 
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

Asi que do_while no existe como una construcción separada en R, pero puede falsificarlo con:

repeat(  expressions; if (! end_cond_expr ) break )

Si quieres ver la página de ayuda no puedes escribir ?while o ?repeat en la consola, sino que necesita usar ?'repeat' o ?'while'. Todas las "construcciones de control" incluyendo if están en la misma página y todos necesitan comillas de caracteres después del "?" para que el intérprete no los vea como código incompleto y le dé un "+" de continuación.

Sobre la base de las otras respuestas, quería compartir un ejemplo del uso de la construcción de bucle while para lograr un comportamiento do-while. Usando una variable booleana simple en la condición while (inicializada en TRUE), y luego verificando nuestra condición real más adelante en la declaración if. También se podría usar una palabra clave break en lugar de continuar <- FALSO dentro de la declaración if (probablemente más eficiente).

  df <- data.frame(X=c(), R=c())  
  x <- x0
  continue <- TRUE

  while(continue)
  
    xi <- (11 * x) %% 16
    df <- rbind(df, data.frame(X=x, R=xi))
    x <- xi

    if(xi == x0)
    
      continue <- FALSE
    
  

valoraciones y reseñas

Si crees que ha sido de ayuda nuestro post, te agradeceríamos que lo compartas con el resto desarrolladores y nos ayudes a difundir esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *