2011-08-25 309 views
16

我有一个字符向量,其中每个元素都括在括号中。我想 删除括号,只是有字符串。从字符串中删除括号

所以,我想:

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

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

Unforunately,这并不出于某种原因。 在使用相同的代码之前,我已经执行了相同的任务,但我不确定这次为什么它不工作。我想从'[Dave]'转到'Dave'

我在做什么错?

+0

我很好奇,为什么你的'paste'命令,在过去的 “工作” ... –

回答

36

你可以GSUB出像这样的括号:

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

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

正则表达式替换可以做到这一点。看看gsub()函数。

这给你想要的东西(它消除 '[' 或 ']' 的任何实例):

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

什么是 'N' 的呢? –

5

其他答案应该足以得到你想要的结果。我只想提供一个简单的解释,说明你为什么尝试不起作用。

paste连接字符串。如果你paste是一个空字符串,"",对于一个分隔符也是一个空字符串的东西,你真的没有改变任何东西。所以paste不能缩短字符串;结果将是相同的(如你的例子)或更长。

2

如果tidyverse内工作:

library(tidyverse); library(stringr) 

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

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