Je suis relativement nouveau à R. Je suis itération sur un vecteur dans R en utilisant la boucle (). Cependant, sur la base d'une certaine condition, je dois sauter des valeurs dans le vecteur. La première pensée qui vient à l'esprit est de changer l'index de boucle dans la boucle. J'ai essayé ça, mais c'est d'une manière ou d'une autre chose ne pas le changer. Il doit y avoir un peu de quoi y atteindre dans R. P>
Merci d'avance. Sami p>
4 Réponses :
Sans exemple, il est difficile de voir ce que vous voulez faire, mais vous pouvez toujours utiliser une déclaration IF à l'intérieur d'une boucle pour la boucle:
foo <- 1:10*5 for (i in seq(length(foo))) { if (foo[i] != 15) print(foo[i]) }
Vous pouvez changer l'index de boucle dans A pour boucle, mais cela n'affectera pas l'exécution de la boucle; Voir la section Détails de Utilisez plutôt une boucle tandis que et indexez manuellement: p> ? "pour" code>:
i <- 1
while(i < 100) {
# do stuff
if(condition) {
i <- i+3
} else {
i <- i+1
}
}
Vous peut i> modifier la variable d'index dans une boucle pour boucle, mais elle ne "restera pas".
@DWIN: D'accord. Je voulais dire "changement" dans le sens de la puissance des valeurs souhaitées - sauter des valeurs.
in r, les altérations locales de la variable d'index sont "corrigées" avec la passe suivante: puisque vous avez un critère de sauter, vous devez appliquer le critère au vecteur de la boucle à l'intérieur du par-parenthèses. E.g: p>
Sauter via le SEQ CODE> L'argument de la boucle pour la boucle suppose que vous avez priori, savez quels éléments à sauter. Si tel est le cas, vous pourrez peut-être utiliser une solution vectorisée et sauter complètement la boucle.
regarder la commande suivant code> va ignorer le reste de l'itération actuelle de la boucle et commencer la suivante. Cela peut accomplir ce que vous voulez. P> p>
Sami - pouvez-vous poster des données d'exemple?
S'il vous plaît donnez-nous un exemple de code ...
Cela change probablement l'index dans la boucle, mais la valeur modifiée ne change pas l'indexation de la prochaine passe. L'indexation au niveau de contrôle n'est pas affectée par votre altération locale de la variable d'index.
D'accord des exemples, je pense qu'il est clair que vous ne pouvez pas changer l'index de boucle dans la boucle. Je suppose que je devrais utiliser "tandis que" boucle. Mais merci pour les réponses quand même.