2017-03-31 10 views
0

最後のスペースをダッシュ​​付きでRにサブする方法は?場合によっては、複数のスペース(aaなど)がありますが、最後のスペースをダッシュ​​(たとえば、bb)だけにしたいと思っています。コードは次のとおりです。ダッシュ付きの最後のスペースをRにサブシェイする方法

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

ありがとうございます。正規表現

.

+0

''(?= [^] + $) ''と 'perl = TRUE'のようなものを使用しますか?これまでに何を試しましたか? – A5C1D2H2I1M1N2O1R2T1

+1

また、 '[]([^] *)$' replace '_ $ 1'を使うこともできます。これが唯一のものであれば、これはstringの先頭と最後のスペースを置き換えます。 – sln

+0

@JDB私は 'sub("(?= [^] + $) "、" _ \\ 1 "、aa、perl = TRUE)'しようとしていて、望ましい出力を得ているようです.... – A5C1D2H2I1M1N2O1R2T1

答えて

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

いくつかの詳細は、任意の文字に一致します。 .*は、任意の文字の0個以上のコピーと一致します。 .*をカッコで囲むと、後で使用できるように一致するマテリアルが保存されます。 今はすべてです。 (.*)は、任意の数の文字の後に空白が続くものと一致します。一致が「貪欲」であるため、が最後にまで空白になります。空白の前の文字列が保存され、置換文字を書き出すときに、空白の前にあるものを複製し、空白をアンダースコアに置き換えます。

+1

これは間違いなく最も簡単で最も単純なオプションです。 – JDB