2011-12-23 8 views
0

は、私は、このような文字列があるとしましょう:R:Rでの正規表現 - 多列抽出

[1] "<u>Degradation:</u> AGL, PGM1, PGM2, PGM3, PYGL, PYGM.<br>\n" 

私は、ベクター中にこれらの遺伝子IDのそれぞれを抽出したいです。この場合はおそらくstrsplitを使うことができますが、後でもっと複雑なケースがあるので、これをregexで行いたいと思います。私が '[A-Z0-9] {2、}を含むすべての文字列を抽出したいとします(2つ以上の大文字と数字の組み合わせがあればそれを必要とします)。

思考?

答えて

3

stringrパッケージは、この種のものをかなり簡単にします。 gsubfn package

> library(stringr) 
> x <- "<u>Degradation:</u> AGL, PGM1, PGM2, PGM3, PYGL, PYGM.<br>\n" 
> str_extract_all(x, '[A-Z0-9]{2,}') 
[[1]] 
[1] "AGL" "PGM1" "PGM2" "PGM3" "PYGL" "PYGM" 
+0

驚くばかりです。ありがとう! – JoshDG

2

1)strapply

strapplyその行うことができます:

library(gsubfn) 
x <- "<u>Degradation:</u> AGL, PGM1, PGM2, PGM3, PYGL, PYGM.<br>\n" 
strapply(x, "[A-Z0-9]{2,}", c) 

2)

をstrapplycまた使用する専門高速のバージョンがあります開発中のc po。

library(gsubfn) 
# download and read in strapplyc 
source("http://gsubfn.googlecode.com/svn/trunk/R/strapplyc.R") 
strapplyc(x, "[A-Z0-9]{2,}") 

はまた、ジェイムズ・ジョイスのユリシーズhereからすべての単語を抽出する。この例を参照してください。柔軟性が最も重要であるならば、それは良い選択かもしれませんので

strapply選択

は、それまでのバリエーションをたくさん持っています。一方、strapplycは、文字列が非常に長く、速度が重要で文字列を抽出する必要がある場合に特に便利です。