2011-08-25 468 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"