2016-05-22 17 views
3

の条件に置き換える方法myvecと呼ばれるこのベクトルがあります。各要素の最初の2つのドット(_の前にある場合)を "-"に置き換えたいとします。どのようにしてRでこれを行い、結果を得ることができますか?私たちは、gsub最初の2つの一致するパターンをR

myvec <- c("SKDP.209.3_C4UAMACXX.7.04.ReCal.sort.bam", "SKDP.97.1_C4UAMACXX.7.12.ReCal.sort.bam", 
    "SKDP972_C4UAMACXX.7.13.ReCal.sort.bam") 

結果

SKDP-209-3_C4UAMACXX.7.04.ReCal.sort.bam, SKDP-97-1_C4UAMACXX.7.12.ReCal.sort.bam, 
    SKDP972_C4UAMACXX.7.13.ReCal.sort.bam 

答えて

5

を試すことができます。キャプチャグループ、つまり(...)に配置された文字を使用して、.([^.]+))ではない文字が1つ、その後にドット(\\.として.が任意の文字と一致するメタキャラクタであるため、それをエスケープする必要があります)ドットではないドットと第3のキャプチャグループの別のセットは、_([^_]+_)の後に続く_ではない1つ以上の文字を含み、残りの文字は文字列の最後まで(.*)、キャプチャグループの逆参照で置き換えます。つまり、最初に\\1、次に-、次に2番目の逆参照...

gsub("^([^.]+)\\.([^.]+)\\.([^_]+_.*)", "\\1-\\2-\\3", myvec) 
#[1] "SKDP-209-3_C4UAMACXX.7.04.ReCal.sort.bam" 
#[2] "SKDP-97-1_C4UAMACXX.7.12.ReCal.sort.bam" 
#[3] "SKDP972_C4UAMACXX.7.13.ReCal.sort.bam" 
+0

ありがとうございました。この部分に少し説明してください。\\ 1 - \\ 2 - \\ 3 "'? – MAPK

+0

@MAPK確かに、ちょっと分 – akrun

関連する問題