Подтвердить что ты не робот

Удалить квадратные скобки из строкового вектора

У меня есть символьный вектор, в котором каждый элемент заключен в скобки. Я хочу снять скобки и просто получить строку.

Итак, я попробовал:

n = c("[Dave]", "[Tony]", "[Sara]")

paste("", n, "", sep="")

К сожалению, это не работает по какой-то причине.

Я выполнил ту же задачу перед использованием того же кода, и не уверен, почему он не работает в этот раз.

Я хочу перейти от '[Dave]' к 'Dave'.

Что я делаю неправильно?

4b9b3361

Ответ 1

Вы можете вырезать скобки следующим образом:

n = c("[Dave]", "[Tony]", "[Sara]")

gsub("\\[|\\]", "", n)
[1] "Dave" "Tony" "Sara"

Ответ 2

Подстановка регулярного выражения сделает это. Посмотрите на функцию gsub().

Это дает вам то, что вы хотите (оно удаляет любой экземпляр '[' или ']'):

gsub("\\[|\\]", "", n)

Ответ 3

Других ответов должно быть достаточно, чтобы получить желаемый результат. Я просто хотел дать краткое объяснение, почему то, что вы пробовали, не сработало.

paste объединяет символьные строки. Если вы paste пустая строка символов, "", что-то с разделителем, который также является пустой строкой символов, вы действительно ничего не изменили. Поэтому paste не может сделать строку символов короче; результат будет либо тем же (как в вашем примере), либо дольше.

Ответ 4

Если вы работаете в tidyverse:

library(tidyverse); library(stringr)

n = c("[Dave]", "[Tony]", "[Sara]")

n %>% str_replace_all("\\[|\\]", "")
[1] "Dave" "Tony" "Sara"