私はいくつかの部分文字列で、この文字列を分割したい: 0、7965:{7347に参加| AB012574 | 8272373:Rでstr_split()を使用するには?
BAA33520.2 | GI | /遺伝子は= "vpf402"、/製品= "Vpf402" :591}
セパレータは| (アスキー124)。
これは他のすべてのセパレータで動作しますが、このセパレータでは動作しません。
私はいくつかの部分文字列で、この文字列を分割したい: 0、7965:{7347に参加| AB012574 | 8272373:Rでstr_split()を使用するには?
BAA33520.2 | GI | /遺伝子は= "vpf402"、/製品= "Vpf402" :591}
セパレータは| (アスキー124)。
これは他のすべてのセパレータで動作しますが、このセパレータでは動作しません。
?regex
2つの正規表現は、中置オペレータ
|
によって接合されてもよいです。結果の正規表現は、いずれかの部分式に一致する文字列に一致します。たとえば、abba|cde
は、文字列abba
または文字列cde
と一致します。文字クラス内では、代替文字は機能しません(|
は文字通りの意味があります)。基本的なビルディングブロックは、1文字に一致する正規表現です。すべての文字と数字を含むほとんどの文字は、それ自身と一致する正規表現です。特別な意味を持つメタキャラクタは、その前にバックスラッシュを付けて引用することができます。拡張正規表現のメタキャラクタは
. \ | () [ {^$ * + ?
ですが、これらが特別な意味を持つかどうかはコンテキストによって異なります。したがって
:
stringr::str_split('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}', "\\|")
Frankが指摘@として、あなたはfixed=TRUE
を追加することによって、base::strsplit()
でこれを行うことができます。
strsplit('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}',"|", fixed=TRUE)
しかし、あなたも飾ることでstringr::str_split()
でこれを行うことができますセパレータの正規表現:
stringr::str_split('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}',
regex("|", literal=TRUE))
ちなみに、stringr
はかなりこの時点でちょうどわずか友好ラッパーstringi
に機能していると、それは文字列spilttingの外にいくつかの素晴らしい宝石が含まれているように私は非常にstringi
パッケージを勉強をお勧めします。
ベースRでは、この 'strsplit( 'BAA33520.2 |/gene =" vpf402 "、/ product =" Vpf402 "| GI:8272373 | AB012574)を回避するためにfixed = TRUEを設定することもできます| join {7347:7965、0:591} '、 "|"、fixed = TRUE) '。オプションがstringrに含まれていないようです。 – Frank
親愛なる皆さん、あなたの提案をありがとう、彼らは素晴らしく働いた! – CLM
+1。その場合は、アンサーマークをチェックして、将来の調査者が問題を解決した答えを知るようにするのが一般的です – hrbrmstr
PS:スプリット機能は、セパレータとして使用されます。 – CLM
あなたは何をしようとしましたか? – hrbrmstr
エスケープしてみましたか? '\\ |' – aosmith