Question

Je me demandais comment écrire-faire en style boucle?

J'ai trouvé ce poste :

  

vous pouvez utiliser la répétition {} et vérifier les conditions whereever utilisant if () et   sortir de la boucle avec le mot de commande « d'arrêt ».

Je ne suis pas sûr de ce qu'il veut dire exactement. Quelqu'un peut-il expliquer s'il vous plaît si vous comprenez et / ou si vous avez une autre solution?

Était-ce utile?

La solution

Assez explicite.

repeat{
  statements...
  if(condition){
    break
  }
}

Ou quelque chose comme ça, je pense. Pour obtenir l'effet de la faire en boucle, vérifiez simplement votre état à la fin du groupe des états.

Autres conseils

Voir ?Control ou R Langue Définition:

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

do_while n'existe pas comme une construction séparée en R, mais vous pouvez simuler avec:

repeat( { expressions}; if (! end_cond_expr ) {break} )

Si vous souhaitez voir la page d'aide que vous ne pouvez pas saisir ?while ou ?repeat à la console, mais plutôt besoin d'utiliser ?'repeat' ou ?'while'. Tous les « contrôle-constructions », y compris if sont sur la même page et tout caractère nécessaire de citer après le « ? » si l'interprète ne les voit pas comme un code incomplet et vous donner une suite « + ».

Sur la base des autres réponses, je voulais partager un exemple d'utilisation de la boucle en construction pour réaliser un do-tout comportement. En utilisant une variable booléenne simple dans l'état tout (initialisé à TRUE), puis vérifier notre état réel plus tard dans l'instruction if. On pourrait aussi utiliser un mot-clé break au lieu de continuer <- FAUX dans l'instruction if (probablement plus efficace).

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

Remarquant que l'utilisateur 42 de-approche parfaite { * « Faire pendant » = « répéter jusqu'à ne pas »
* L'équivalence de code:

do while (condition) # in other language
..statements..
endo

repeat{ # in R
  ..statements..
  if(! condition){ break } # Negation is crucial here!
}

} n'a pas reçu assez d'attention aux autres, je vais mettre en relief et faire avancer son approche par un exemple concret. Si l'on ne nie pas la condition do-while (via ! ou en prenant la négation), puis situations déformées (1. Valeur persistance 2. boucle infinie) existent en fonction du cours du code.

Dans Gauss:

proc(0)=printvalues(y);
DO WHILE y < 5;    
y+1;
 y=y+1;
ENDO;
ENDP;
printvalues(0); @ run selected code via F4 to get the following @
       1.0000000 
       2.0000000 
       3.0000000 
       4.0000000 
       5.0000000 

R

printvalues <- function(y) {
repeat {
 y=y+1;
print(y)
if (! (y < 5) ) {break}   # Negation is crucial here!
}
}
printvalues(0)
# [1] 1
# [1] 2
# [1] 3
# [1] 4
# [1] 5

toujours insister pour que, sans la négation de la condition do-temps, la réponse de Salcedo est erroné. On peut le vérifier par la suppression symbole de négation dans le code ci-dessus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top