Ich möchte bestimmte Zeichen aus Zeichenfolgen innerhalb eines Vektors entfernen, ähnlich der Funktion Suchen und Ersetzen in Excel.
Hier sind die Daten, mit denen ich beginne:
group <- data.frame(c("12357e", "12575e", "197e18", "e18947")
Ich beginne nur mit der ersten Spalte; Ich möchte die zweite Spalte erzeugen, indem ich die e
's entferne :
group group.no.e
12357e 12357
12575e 12575
197e18 19718
e18947 18947
fixed = TRUE
würde das schneller machen.fixed=TRUE
verhindert, dass R reguläre Ausdrücke verwendet, die einen flexibleren Mustervergleich ermöglichen, aber Zeit für die Berechnung benötigen. Wenn nur eine einzelne konstante Zeichenfolge "e" entfernt werden muss, sind sie nicht erforderlich.sub("e", "", group)
das gleiche Ergebnis halten?e
es in jedem Element findetReguläre Ausdrücke sind deine Freunde:
Verwenden Sie jetzt
gsub()
mit dem einfachstmöglichen Ersatzmuster: leere Zeichenfolge:quelle
require(stringr);group$groupNoE <- str_replace(group$group, "e", "")
str_replace
Wrapssub
, so wird es nur ersetzen das erste Vorkommen des Musters. Sie müssten verwenden,str_replace_all
wenn Sie das gleiche Verhalten wie möchtengsub
.2 Möglichkeiten zum Ersetzen von Zeichenfolgen zusammenfassen:
1) Verwenden
gsub
2) Verwenden Sie das
stringr
PaketBeide erzeugen die gewünschte Ausgabe:
quelle
Sie müssen keinen Datenrahmen aus einem Zeichenfolgenvektor erstellen, wenn Sie einige Zeichen darin ersetzen möchten. Reguläre Ausdrücke sind eine gute Wahl, da sie bereits von @Andrie und @Dirk Eddelbuettel erwähnt wurden.
Beachten Sie, dass Sie, wenn Sie Sonderzeichen wie Punkte ersetzen möchten, die vollständige Syntax für reguläre Ausdrücke verwenden sollten, wie im folgenden Beispiel gezeigt:
das wird produzieren
quelle
gsub("\\.", " ", ctr_names)
Verwenden Sie das Stringi- Paket:
quelle
quelle