Ich habe eine Liste von Strings (sehr groß, Millionen von Zeilen), aus denen ich bestimmte Teile extrahieren möchte.R: Teil der Zeichenfolge mit unterschiedlicher Länge extrahieren
Ich spalte zuerst die Zeichenkette am Semikolon und extrahiere dann zu spezifischen Abschnitten. Es ist ein wenig komplizierter, da es manchmal 3, manchmal 4 Segmente in einer Reihe gibt. Aber die Teile, die mich interessieren, sind immer das letzte und vorletzte Segment.
Beispielcode:
dataStr = c("secAlways; secExtr1; secExtr2",
"secSometimes; secAlways; secExtr1; secExtr2",
"secSometimes; secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2",
"secSometimes; secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2",
"secAlways; secExtr1; secExtr2")
splStr <- strsplit(dataStr, ";")
extr1 <- list()
extr2 <- list()
for (i in 1:length(splStr)) {
extr1[i] <- head(tail(splStr[[i]], n=2), n=1)
extr2[i] <- tail(splStr[[i]], n = 1)
}
Es funktioniert, aber es ist viel zu langsam. Ich wäre dankbar für jede Idee, wie man das schneller machen kann. Ich vermute, dass dies mit apply
gemacht werden könnte, aber ich konnte meinen Kopf nicht darum wickeln.
Die Frage aufgeworfen wurde, ob es sich um eine doppelte Frage zu this Frage sein könnte. Ich denke, es ist ein bisschen anders, da ich die letzten beiden Elemente extrahieren möchte und die Anzahl der Abschnitte unterschiedlich ist. Auch habe ich nicht die Lösung mit vapply
bekommen, um an meiner realen Probe zu arbeiten.
Mögliche Duplikat von [Wie in R letzte Teilelement jedes Element einer Liste bekommen] (http://stackoverflow.com/questions/36143119/how-to-get-last-subelement-of-every -element-of-a-list-in-r) –