Ich fand ein sehr seltsames Verhalten in strsplit()
. Es ist ähnlich wie this question, aber ich würde gerne wissen, warum es ein leeres Element an erster Stelle zurückgibt. Weiß jemand das?strsplit gibt unsichtbares Element zurück
unlist(strsplit("88F5T7F4T13F", "\\d+"))
[1] "" "F" "T" "F" "T" "F"
Da ich diese Zeichenfolge vor einem langen logischen Vektor (88 * FALSCH 5 * TRUE 7 * FALSCH 4 * TRUE 13 * FALSCH) Reproduzieren wir vertrauen müssen ...
Antwort unlist(strsplit("88F5T7F4T13F", "\\d+"))[-1]
Werke aber ist es robust?
Dieses Verhalten wird erwartet und ist in der Dokumentation erläutert. –
Das leere Element erscheint, da am Anfang Ziffern stehen. Da Sie bei Ziffern aufteilen, tritt die erste Teilung zwischen dem Anfang der Zeichenfolge und dem ersten "F" auf, und die leere Zeichenfolge am Anfang der Zeichenfolge wird der resultierenden Liste hinzugefügt. Sie können 'unlist (strsplit (sub ("^\\ d + "," "," 88F5T7F4T13F ")," \\ d + ")) oder Ihre Lösung verwenden. –
Um die leeren Elemente systematischer zu entfernen, können Sie auch num_split = unlist verwenden (strsplit ("88F5T7F4T13F", "\\ d +")); num_split = num_split [num_split! = ""] –