Regulärer R-Ausdruck:Ersetzen Sie die gesamte Zeichenfolgenliste durch spezifischere Informationen

StackOverflow https://stackoverflow.com//questions/23048595

  •  21-12-2019
  •  | 
  •  

Frage

Wenn ich Daten mit einer kategorialen Variablen habe, die Elemente enthält wie "Q7", "Q2", usw., wie ersetze ich es durch "7 Queen", "2 Queen", usw.?

War es hilfreich?

Lösung

Zunächst einmal können Sie eine Frage am besten stellen, wenn Sie auch den Code für das angeben, was Sie bereits versucht haben.Das gesagt...

Vielleicht nicht die effizienteste Methode, dieses Problem für große Datenmengen zu lösen, aber diese beiden Methoden scheinen in Ihrem Beispiel gut zu funktionieren. example(strsplit) hat eine nette String-Umkehrfunktion, die wir nutzen können.

> strReverse <- function(x)
      sapply(lapply(strsplit(x, NULL), rev), paste, collapse = "")

> strg <- c("Q7", "Q2")
> GS <- gsub("Q", strReverse(" Queen"), strg)
> strReverse(GS)
[1] "7 Queen" "2 Queen"

Eine andere Möglichkeit wäre die Verwendung paste

> S <- paste0(strReverse(strg), "ueen")
> gsub("Q", " Q", S)
[1] "7 Queen" "2 Queen"

Andere Tipps

Regex

(Q)(\d)

Ersetzen Sie Regex

$2 Queen

Regular expression visualization

Debuggex-Demo

Beschreibung

1st Capturing group (Q)
    Q matches the character Q literally (case insensitive)
2nd Capturing group (\d)
    \d match a digit [0-9]
g modifier: global. All matches (don't return on first match)
i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])

Notiz: Sie benötigen für jeden Buchstaben eines davon

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top