2011-08-25 17 views
16

Tengo un vector de caracteres en el que cada elemento está entre corchetes. Quiero para eliminar los soportes y simplemente tengo la cadena.Eliminación de corchetes de una cadena

así que he intentado:

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

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

Unforunately, esto no funciona por alguna razón. He realizado la misma tarea antes de usar este mismo código, y no estoy seguro de por qué no está funcionando esta vez.

Quiero pasar de '[Dave]' a 'Dave'.

¿Qué estoy haciendo mal?

+0

tengo curiosidad por qué su comando 'paste' "trabajó" en el pasado ... –

Respuesta

36

Se podría gsub los soportes de este modo:

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

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

Una sustitución de expresión regular lo hará. Mire la función gsub().

Esto le da lo que quiere (que elimina cualquier instancia de '[' o ']'):

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

¿cuál es la 'n' para? –

5

El otro las respuestas deberían ser suficientes para obtener el resultado deseado. Solo quería brindar una breve explicación de por qué lo que probaste no funcionó.

pasteconcatena cadenas de caracteres. Si paste una cadena de caracteres vacía, "", a algo con un separador que también es una cadena de caracteres vacía, realmente no ha alterado nada. Por lo tanto, paste no puede hacer que una cadena de caracteres sea más corta; el resultado será el mismo (como en su ejemplo) o más largo.

2

Si se trabaja dentro de tidyverse:

library(tidyverse); library(stringr) 

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

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