GNU R: sub

Aus Wikibooks

Die Funktionen sub() und gsub() ersetzen ein Textmuster durch eine andere Zeichenfolge:

R> test <- "Handle so, dass die Maxime Deines als Prinzip einer Gesetzgebung gelten könnte"
R> sub("Deines ","Deines Willens ",test)
[1] "Handle so, dass die Maxime Deines Willens als Prinzip einer Gesetzgebung gelten könnte"

R> test <- "gsub ersetzt im Gegensatz zu sub mehrfach"
R> sub("sub","...",test)
[1] "g... ersetzt im Gegensatz zu sub mehrfach" 
R> gsub("sub","...",test)
[1] "g... ersetzt im Gegensatz zu ... mehrfach"

sub und gsub verstehen sogenannte regexp-Ausdrücke, die mit ?regexp eingesehen werden können. Eine kurze Übersicht darüber:

  • . steht für ein beliebiges Zeichen
  • * bedeutet, dass das Zeichen links daneben entweder gar nicht oder beliebig oft vorkommen kann
  • + bedeutet, dass das Zeichen links daneben entweder einmal oder beliebig oft vorkommen kann, aber nicht gar nicht
  • .* entsprechend für eine beliebige Zeichenfolge
  • a* steht für beliebig viele "a" (usw.)
  • [0-9a-z] eckige Klammern stehen für ein Zeichen, das aus der in den Klammern definierten Menge stammen kann
  • ( ) runde Klammern bezeichnen eine Muster, das mit \\1 , \\2 usw. wieder ersetzt werden kann.
R> test <- "Hier fehlen _ einige _ Worte."
R> sub("_ (einige) _","noch \\1 wichtige",test) 
[1] "Hier fehlen noch einige wichtige Worte." 

siehe auch[Bearbeiten]