Gibt es eine Möglichkeit, Nullwerte in einem iterativen Prozess zu speichern, wenn eine Bedingung aktiviert ist, um zur nächsten Iteration überzugehen?Die Absicht dieses Problem „wie zu lösen“ ist mit der Struktur selbst der SchleifeSpeichern von Nullwerten beim Überspringen einer Iteration in einer for-Schleife
[CONTEXT]:
ich auf den Fall beziehen, wenn Sie einen Speichermechanismus innerhalb eines verwenden müssen Schleife in Verbindung mit einer bedingten Anweisung, und es wird das Szenario gegeben, in dem grundsätzlich einer der möglichen Pfade nicht von Interesse ist. In der Ehre, die Behandlung im Moment und nicht hinter der Berechnung zu geben, springen Sie zur nächsten Iteration.
[Beispiel]
Angenommen, eine bestimmte Folge von Zahlen gegeben, ich mag nur gespeichert, um die Zahlen der Folge, die größer als 2 in einer Liste.
storeGreaterThan2 <- function(x){
y <- list()
for (i in seq_along(x)) {
if (x[i] > 2) {
y[[i]] <- x[i]
} else {
next
}
}
y
}
Der bisherige Funktion Deal mit dem Endzweck, aber wenn die Bedingung der Iteration überspringen der fehlende Betrieb im Index aktiviert ist, wird mit einem Null-Wert in der endgültigen Liste gefüllt.
> storeGeaterThan2(1:5)
[[1]]
NULL
[[2]]
NULL
[[3]]
[1] 3
[[4]]
[1] 4
[[5]]
[1] 5
Im Geist mit dem Problem in der Struktur der Schleife des Umgangs, wie sie damit umgehen können?
Innerhalb der Schleife verwenden, um die Indexlänge (y) +1, um ein zusätzliches Element hinzuzufügen, zB: y [[length (y) +1]] <- x [i] '. Abhängig von Ihren gewünschten Ergebnissen gibt es mehrere bessere und schnellere Möglichkeiten als die Verwendung einer for-Schleife. – Dave2e
Dies ist eine gute Lösung, um mit dem Problem der NULL-Werte in der gleichen Schleife zu führen. –