2014-02-08 60 views
5

只刪除「實際數字」我有數字和字符如何從字符的字符串中的R

c2 = "list of 2nd C2 H2O 1 12 123" 

我需要擺脫的是實際數字的所有數字串,即1,12 ,123,但不屬於字符集的一部分,即第二個,C2,H2O。

到目前爲止,我想出了最好的解決辦法是這樣的

gsub("? [[:digit:]]*", " ", c2) 
"list of nd C2 H2O " 

它成功地擺脫了1 12 123,同時保留C2 H2O。但是,我在第二場輸了2場。

我在我的智慧結束。

謝謝!

回答

3

試試這個:

> gsub("\\b\\d+\\b", "", c2) 
[1] "list of 2nd C2 H2O " 
+0

它像魔術一樣工作。我認爲\\ b \\ d + \\ b表示空格+數字+空格。但是123並沒有以空白結尾(我錯了嗎?)。爲什麼它也被刪除? – wen

+0

'「\\ b」'表示邊界,而不是空白。 –

1

這裏有一個古怪的做法,不要求正則表達式:

Rgames> c2 = "list of 2nd C2 H2O 1 12 123" 
Rgames> sc2<-unlist(strsplit(c2,' ')) 
Rgames> nc2<-as.numeric(sc2) 
Warning message: 
NAs introduced by coercion 
Rgames> ssc2<-paste(sc2[is.na(nc2)]) 
Rgames> ssc2 
[1] "list" "of" "2nd" "C2" "H2O" 

如果需要的話,可以paste導致成一個字符串。