2016-06-27 12 views
-1

ゲノミクスでは、多くの場合、セミコロンで区切られた遺伝子名の多くの文字列を扱わなければなりません。私はパターンマッチング(文字列内の特定の遺伝子名を見つける)をして、それを文字列から削除したいと思います。遺伝子名の前または後にセミコロンを削除する必要もあります。このおもちゃの例は、この問題を説明します。前後の文字列とセミコロンのパターンを削除する(R)

s <- c("a;b;x", "a;x;b", "x;b", "x") 
library(stringr) 
str_replace(s, "x", "") 
#[1] "a;b;" "a;;b" ";b" "" 

希望の出力が必要です。

#[1] "a;b" "a;b" "b" "" 

私も;xx;のためのパターンマッチングを行うことができ、それは私に出力を与えるだろう。それはあまり効率的ではありません。 gsubまたはstringiパッケージを使用することもできますが、これも問題ありません。

答えて

3

xは、文字列の先頭の文字であればそうでない場合は記載されているように、すべてのケースをカバーするべきそれ以前xとオプション;を削除する後xとオプション;を削除します。

str_replace(s, "^x(;?)|(;?)x", "") 
# [1] "a;b" "a;b" "b" ""  
+0

ありがとうございました。しかし、最初の要素にはまだ余分なものがあります。最後に。 "a; b;" "a; b"でなければなりません。 – milan

+0

ああ。うん、それは本当です。ちょうど答えを更新しました。 – Psidom

1

我々はbase Rからgsubを使用することができます

gsub("^x;|;?x", "", s) 
#[1] "a;b" "a;b" "b" "" 
関連する問題