2016-06-08 10 views
0

Ich versuche, alle". " in einer bestimmten Spalte meines Datenrahmens mit "/". Es gibt andere Zeichen in jeder Zelle und ich möchte sicherstellen, dass ich nur die "." S ändere. Wenn ich gsub verwende, bekomme ich eine Ausgabe, die die Änderungen zu machen scheint, aber wenn ich dann zu View() gehe, werden die Änderungen nicht wirklich gemacht ... Ich dachte, gsub sollte eigentlich den Wert im Datenrahmen ändern . Benutze ich es falsch? Ich habe meinen Code unten.Punkte mit `gsub` ersetzen

gsub(".", "/", spy$Identifier, ignore.case = FALSE, perl = FALSE, 
    fixed = TRUE, useBytes = FALSE) 

Ich habe auch versucht sub, aber der Code, den ich unten geändert habe jeden Eintrag selbst zu „/“ und ich bin nicht sicher, wie es zu ändern.

spy$Identifier <- sub("^(.).*", "/", spy$Identifier) 

Vielen Dank!

+4

Ich würde 'chartr()' anstelle von 'gsub()' empfehlen, da es eine Eins-zu-Eins-Zeichenübersetzung ist. 'chartr (". ","/", spy $ Identifier)' und du bist fertig. –

+0

Wir können nicht wirklich viel weiter gehen, bis Sie ein reproduzierbares Beispiel liefern. –

+0

Egal, die Antwort unten funktioniert ... Vielen Dank für Ihre Hilfe! – Mel

Antwort

2

Meine Empfehlung wäre, dem "." Zeichen:
spy$Identifier <- gsub("\\.", "/", spy$Identifier)
Im regulären Ausdruck ist ein Punkt ein Sonderzeichen, das mit einem beliebigen Zeichen übereinstimmt. "Escaping" weist die Suche an, nach einer tatsächlichen Periode zu suchen. In R's gsub wird dies mit zwei umgekehrten Schrägstrichen erreicht (z.B. "\\"). In anderen Sprachen ist es oft nur ein Backslash.

+0

Das hat funktioniert, vielen Dank! – Mel

+2

Ich bekomme es nicht, OP bereits verwendet 'fest = TRUE'. Das sollte auch funktionieren. Und es ist viel effizienter, als Punkt zu entkommen - daher die empfohlene Lösung in der Regel. –