R: Wie, zum Inkrementieren der inkrementierten variable in einer for-Schleife?
Ich versuche, manuell erhöhen die ich variable, wenn eine bestimmte Bedingung erfüllt ist.
for(i in 1:x){
if(condition){
i <- i + 2
}
}
Beim Debuggen, die (i<-i+2) line ist definitiv die laufen, aber ich habe immer nur den Wert 1 erhöht, statt 3. (+2 von der Linie und einer zusätzlichen +1 aus der auto-Inkrement)
Wie kann ich die Schrittweite während ich innerhalb der Schleife?
- Warum nutzen Sie nicht
while(i <= x)
stattfor(i in 1:x)
? - Es ist extrem schlechte Praxis, um dies zu tun, selbst in Sprachen, die Sie unterstützen.
repeat
oderwhile
ist eine bessere Redewendung, wenn Sie planen, ändern Sie die Schleife an mehreren stellen variabel. Sie Ihre Zukunft selbst, auch ich danke Ihnen ungemein, wenn Sie jemals wieder zu diesem code. Colin ' s code ist eine gute alternative für die Fälle wo Sie definitiv, Durchlaufen Sie die ganze Sequenz aber ändern müssen eine andere variable. Abweichende, vom Vertragfor
idiom ist einfach keine gute Idee.
Du musst angemeldet sein, um einen Kommentar abzugeben.
So im wesentlichen Sie wollen direkt ein paar schleifendurchläufe, basierend auf einer Bedingung. Es ist eine Entwurfsentscheidung, die zu Recht verpönt, aber wenn Sie müssen, müssen Sie
next
. Der folgende code überspringt die Dritte, fünfte und siebte iteration:Sagen, müssen Sie erhöhen mit 3 basierend auf einer bestimmten Bedingung, dann können Sie eine temporäre variable, die hilft, die Sie überspringen eine Anzahl von Schritten. Beachten Sie, dass dies nicht gehen durch jede iteration, es bricht aus der iteration in der Zeit:
Beim ausführen der Schleife den Wert der variable
i
gespeichert intmp*
. Dies bedeutet, dass, wenn wir den Gipfel erreichen, wird der loop -i
setzt. Zum BeispielZu bekommen, was Sie wollen, Sie hätte so etwas wie:
Sobald die Sequenz wird erstellt, Sie ziemlich viel eine Menge zu verlieren der Kontrolle über eine Schleife. In Fällen wie diesem, ändere ich es in einer while-Schleife und führen Sie dann die bedingte Inkrementieren/Dekrementieren am Ende der Schleife.
können Sie dies tun..