Ich habe einen Zeichenvektor, in dem jedes Element in Klammern eingeschlossen ist. Ich will
um die Klammern zu entfernen und nur die Zeichenfolge zu haben.
Also habe ich es versucht:
n = c("[Dave]", "[Tony]", "[Sara]")
paste("", n, "", sep="")
Leider funktioniert das aus irgendeinem Grund nicht.
Ich habe die gleiche Aufgabe ausgeführt, bevor ich den gleichen Code verwende, und bin mir nicht sicher, warum es diesmal nicht funktioniert.
Ich möchte gehen '[Dave]'
zu 'Dave'
.
Was mache ich falsch?
Sie könnten die Klammern wie folgt auslesen:
n = c("[Dave]", "[Tony]", "[Sara]")
gsub("\\[|\\]", "", n)
[1] "Dave" "Tony" "Sara"
Eine reguläre Ausdrucksersetzung wird es tun. Sehen Sie sich die Funktion gsub () an.
Dies gibt Ihnen, was Sie wollen (es entfernt jede Instanz von '[' oder ']'):
gsub("\\[|\\]", "", n)
Die anderen Antworten sollten ausreichen, um die gewünschte Ausgabe zu erhalten. Ich wollte nur kurz erklären, warum das, was du versucht hast, nicht funktioniert hat.
paste
verkettet Zeichenketten. Wenn du paste
eine leere Zeichenkette, ""
, zu etwas mit einem Trennzeichen, das auch eine leere Zeichenfolge ist, haben Sie wirklich nichts geändert. Damit paste
kann eine Zeichenfolge nicht kürzer machen; Das Ergebnis ist entweder das gleiche (wie in Ihrem Beispiel) oder länger.
Wenn innerhalb von Ordinary arbeiten:
library(tidyverse); library(stringr)
n = c("[Dave]", "[Tony]", "[Sara]")
n %>% str_replace_all("\\[|\\]", "")
[1] "Dave" "Tony" "Sara"