Hier sind einige Möglichkeiten:
1) sub
sub(".*:", "", string)
## [1] "E001" "E002" "E003"
2) strsplit
sapply(strsplit(string, ":"), "[", 2)
## [1] "E001" "E002" "E003"
3) read.table
read.table(text = string, sep = ":", as.is = TRUE)$V2
## [1] "E001" "E002" "E003"
4) Teilzeichenfolge
Dies setzt voraus, dass der zweite Teil immer mit dem 4. Zeichen beginnt (was im Beispiel in der Frage der Fall ist):
substring(string, 4)
## [1] "E001" "E002" "E003"
4a) Teilzeichenfolge / Regex
Wenn sich der Doppelpunkt nicht immer an einer bekannten Position befindet, können wir (4) ändern, indem wir danach suchen:
substring(string, regexpr(":", string) + 1)
5) Strapplyc
strapplyc
Gibt den in Klammern gesetzten Teil zurück:
library(gsubfn)
strapplyc(string, ":(.*)", simplify = TRUE)
## [1] "E001" "E002" "E003"
6) read.dcf
Dieser funktioniert nur, wenn die Teilzeichenfolgen vor dem Doppelpunkt eindeutig sind (wie im Beispiel in der Frage angegeben). Außerdem muss das Trennzeichen ein Doppelpunkt sein (was in Frage kommt). Wenn ein anderes Trennzeichen verwendet würde, könnten wir sub
es zuerst durch einen Doppelpunkt ersetzen. Zum Beispiel, wenn das Trennzeichen _
dann wärestring <- sub("_", ":", string)
c(read.dcf(textConnection(string)))
## [1] "E001" "E002" "E003"
7) trennen
7a) Mit tidyr::separate
erstellen wir einen Datenrahmen mit zwei Spalten, eine für den Teil vor dem Doppelpunkt und eine für nach dem Doppelpunkt, und extrahieren dann den letzteren.
library(dplyr)
library(tidyr)
library(purrr)
DF <- data.frame(string)
DF %>%
separate(string, into = c("pre", "post")) %>%
pull("post")
## [1] "E001" "E002" "E003"
7b) Alternativ separate
kann verwendet werden, um nur die post
Spalte und dann unlist
und unname
den resultierenden Datenrahmen zu erstellen :
library(dplyr)
library(tidyr)
DF %>%
separate(string, into = c(NA, "post")) %>%
unlist %>%
unname
## [1] "E001" "E002" "E003"
8) trimws Wir können trimws
Wortzeichen von links abschneiden und dann erneut verwenden, um den Doppelpunkt zu trimmen.
trimws(trimws(string, "left", "\\w"), "left", ":")
## [1] "E001" "E002" "E003"
Hinweis
Die Eingabe string
wird angenommen als:
string <- c("G1:E001", "G2:E002", "G3:E003")
_
als Trennzeichen diente, und machte zwei separate Variablen für das Präfix und das Suffix basierend auf der Antwort von @Grothendieck:prefix <- sub("_.*", "", variable)
undsuffix <- sub(".*_", "", variable)