Ich habe einen Vektor namens v mit positiven und negativen Werten sowie Nullen. Die Frage ist, wie man (in einer Liste) alle kontinuierlichen Folgen positiver Zahlen extrahiert, das sind die Folgen positiver Zahlen, die durch Nullen getrennt sind.
Hier ist v:
%Vor%Die Ausgabe muss etwa lauten:
%Vor%Irgendwelche Ideen?
Sie können versuchen:
%Vor%Was ich getan habe:
v
gebildet wurde.
Map
können Sie den Teil des Vektors zwischen zwei Nullen extrahieren Hier ist ein kurzer mit split
:
Dies setzt im Wesentlichen nur v
auf positive Zahlen, dann verwendet den cumsum(v==0)
-Zähler (der innerhalb einer Gruppe positiver Werte stabil sein wird, und erhöht, wenn er die unmittelbar folgende 0
trifft) in split
diese Gruppe. Voila!
Ein weiterer Versuch mit rle
:
Hier eine Option:
%Vor%Die Idee:
Erstellen Sie eine Gruppen-ID für jede 0
Für jede Gruppe entfernen Sie 0, prüfen Sie, ob alle Werte positiv sind, andernfalls geben Sie NA
Entferne fehlende Vektoren aus dem Endergebnis.
Es ist besser, Ergebnisse in einer data.table (data.frame) als in einer Liste zu gruppieren. Ich habe den gleichen Code oben verwendet, nur wickle ich ihn in eine data.table-Struktur.
%Vor%