Ich habe einen Zeichenvektor von Börsentickern, bei denen der Tickername mit dem Land, in dem dieser Ticker basiert, in der folgenden Form verkettet ist: country_name/ticker_name. Ich versuche, jede Zeichenfolge zu teilen und alles von der '/' zurück zu löschen, einen Zeichenvektor nur der Tickernamen zurückgeben. Hier ist ein Beispielvektor:Löschen von Zeichen vor regulärem Ausdruck (R)
sample_string <- c('US/SPY', 'US/AOL', 'US/MTC', 'US/PHA', 'US/PZI',
'US/AOL', 'US/BRCM')
Mein erster Gedanke wäre, die Stringr-Bibliothek zu verwenden. Ich habe nicht wirklich keine Erfahrung mit diesem Paket, aber hier ist das, was ich habe versucht:
library(stringr)
split_string <- str_split(sample_string, '/')
Aber ich war nicht sicher, wie nur das zweite Element jeder Liste als einziger Vektor zurückzukehren.
Wie würde ich dies über einen großen Zeichenvektor (~ 105 Millionen Einträge) tun?
Es gibt viele Möglichkeiten, dies zu erreichen. Zum Beispiel 'sub (". */(. *) "," \\ 1 ", sample_string)' ODER 'sub (". */"," ", Sample_string)' oder vielleicht wird das schneller, weil Vermeiden von Regex 'data.table :: tstrsplit (Beispiel_String,"/", fest = TRUE) [[2]]' –
Sind die '. */(. *)' hier als Zeiger? –
Es bedeutet "* match alles vor dem Back-Slash (einschließlich) und erfassen alles danach *". Dann sagt '\\ 1'' sub', um die erfasste Gruppe zurückzugeben.Obwohl ich denke, dass es in diesem Fall überkompleziert ist. Die anderen beiden Optionen sind wahrscheinlich besser/einfacher. Wie auch immer, diese Art von Frage wurde viele Male auf SO gestellt, Sie sollten Google wirklich ausprobieren, wenn Sie mehr Regex-Beispiele in R sehen möchten. Und ich empfehle diese Seite für zukünftige Regex-Tests https://regex101.com/ und dieses für Tutorials http://www.regular-expressions.info/tutorial.html –