Ответ 1
Вы можете вырезать скобки следующим образом:
n = c("[Dave]", "[Tony]", "[Sara]")
gsub("\\[|\\]", "", n)
[1] "Dave" "Tony" "Sara"
У меня есть символьный вектор, в котором каждый элемент заключен в скобки. Я хочу снять скобки и просто получить строку.
Итак, я попробовал:
n = c("[Dave]", "[Tony]", "[Sara]")
paste("", n, "", sep="")
К сожалению, это не работает по какой-то причине.
Я выполнил ту же задачу перед использованием того же кода, и не уверен, почему он не работает в этот раз.
Я хочу перейти от '[Dave]'
к 'Dave'
.
Что я делаю неправильно?
Вы можете вырезать скобки следующим образом:
n = c("[Dave]", "[Tony]", "[Sara]")
gsub("\\[|\\]", "", n)
[1] "Dave" "Tony" "Sara"
Подстановка регулярного выражения сделает это. Посмотрите на функцию gsub().
Это дает вам то, что вы хотите (оно удаляет любой экземпляр '[' или ']'):
gsub("\\[|\\]", "", n)
Других ответов должно быть достаточно, чтобы получить желаемый результат. Я просто хотел дать краткое объяснение, почему то, что вы пробовали, не сработало.
paste
объединяет символьные строки. Если вы paste
пустая строка символов, ""
, что-то с разделителем, который также является пустой строкой символов, вы действительно ничего не изменили. Поэтому paste
не может сделать строку символов короче; результат будет либо тем же (как в вашем примере), либо дольше.
Если вы работаете в tidyverse:
library(tidyverse); library(stringr)
n = c("[Dave]", "[Tony]", "[Sara]")
n %>% str_replace_all("\\[|\\]", "")
[1] "Dave" "Tony" "Sara"