2012-08-02 54 views
17

我很努力地刪除字符串中的下劃線之前的子字符串。 我想用*(通配符)作爲位下劃線之前可以改變:使用gsub從字符串中刪除模式

a <- c("foo_5", "bar_7") 

a <- gsub("*_", "", a, perl = TRUE) 

結果應該是這樣的:

> a 
[1] 5 7 

我也試着像「^ * 」或東西「 「」但沒有真正的工作。

回答

34

下面的代碼工作在你的例子:

gsub(".*_", "", a) 
+0

十分感謝。什麼是'。'代表?爲什麼明星「*」(通配符)不能自行工作?我不明白? – user969113 2012-08-02 11:20:24

+4

'。'代表任何字符,因此「。*」代表任意數量的任何字符。你可以通過鍵入'?regex'找到更多的解釋。 – Pop 2012-08-02 11:23:19

+1

啊我明白了!我認爲*包含''的含義。已經!那麼,現在我知道更好。再次感謝! – user969113 2012-08-02 13:51:27

4

或者,你也可以嘗試:

gsub("\\S+_", "", a) 
-4
as.numeric(gsub(pattern=".*_", replacement = '', a) 
[1] 5 7 
+2

除了爲了更好的理解而編寫代碼之外,總是在解釋中添加解釋 – bigbounty 2017-07-23 04:40:56