2017-03-31 20 views
0

如何用R劃破最後一個空格?在某些情況下,有多個空格(例如aa),但我只想用短劃線(例如bb)劃分最後一個空格。代碼如下:如何用R劃破最後一個空格R

aa <- c("Rapamycin 20nM", "Tributyltin chloride 100nM") 
bb <- c("Rapamycin_20nM", "Tributyltin chloride_100nM") 

謝謝。

+0

使用類似'「(?= [^] + $)''和'perl = TRUE'?你試過什麼了? – A5C1D2H2I1M1N2O1R2T1

+1

或者您可以使用'[]([^] *)$'replace'_ $ 1'這也可以替換字符串開始/結尾處的空格(如果它是唯一的)。 – sln

+0

@JDB我嘗試了'sub(「(?= [^] + $)」,「_ \\ 1」,aa,perl = TRUE)',並且似乎得到了期望的輸出.... – A5C1D2H2I1M1N2O1R2T1

回答

1
sub("(.*) ", "\\1_", aa) 
[1] "Rapamycin_20nM"    "Tributyltin chloride_100nM" 

對正則表達式

.一些細節匹配任何字符。 .*匹配任何字符的零個或多個副本。將.*放在括號內可以保存匹配材料以備後用。 現在整個事情。 (.*)匹配任意數量的字符後跟空白。因爲匹配是「貪婪」,所以直到最後爲空。保存空白字符串之前的字符串,以便當我們寫出替換字符時,我們只需複製空白字符之前的內容並用下劃線替換空白字符。

+1

這絕對是最簡單和最直接的選擇。 – JDB