Hier sind einige Alternativen. Sie verwenden keine Pakete und sie funktionieren alle, wenn x
eine einzelne Zeichenfolge oder ein Vektor von Zeichenfolgen ist (außer (3), die nur für eine einzelne Zeichenfolge ist - (3a) ist die Vektorversion von (3)).
Sie nutzen diese Eingabe:
x <- "Enrolment in secondary school, private school"
1) gsub Dieses in einem Rutsch das Präfix und das Suffix mit dem leeren String ersetzt:
gsub("Enrolment in |,.*", "", x)
## [1] "secondary school"
2) Unter Dies tut das gleiche, aber in separaten sub
Aufrufe:
sub(",.*", "", sub("Enrolment in ", "", x))
## [1] "secondary school"
2a) sub/Teilzeichenfolge Da wir die Länge des Präfix wissen wir eines der sub
Anrufe mit substring
ersetzen könnte:
sub(",.*", "", substring(x, 14))
## [1] "secondary school"
3) strsplit Obwohl man normalerweise nicht diese Lösung ein verwenden würde strsplit verwenden könnte, wie gezeigt:
strsplit(x, "Enrolment in |,.*")[[1]][2]
## [1] "secondary school"
3a) bis (3) auf einen Vektor von Strings zu verallgemeinern:
sapply(strsplit(x, "Enrolment in |,.*"), "[", 2)
## [1] "secondary school"
4) read.table Dies ersetzt das Präfix mit einem Komma und dann liest sie als kommagetrennte Felder read.table
die zweite Spalte Abgreifen:
read.table(text = sub("Enrolment in ", ",", x), sep = ",", as.is = TRUE)[[2]]
## [1] "secondary school"
'stringr :: str_replace (str, "Anmeldung in (. +),. +", "\\ 1") 'wird wahrscheinlich den Trick machen.Klammern definieren eine Gruppierung, auf die später in der Reihenfolge Bezug genommen werden kann (d. H. Der 'n' te Satz von Klammern kann mit '\\ n' referenziert werden). Offensichtlich ist es keine sehr belastbare Regex, aber es besteht Ihren Testfall. –
Dank Akhil, aber dieser Ausdruck entfernt nur die "Registrierung in" Teil, aber nicht die "," und alles danach. – cimentadaj
Haben Sie die ',. +' Nach der geschlossenen Klammer eingeschlossen? Funktioniert gut für mich –