2011-12-23 3 views
0

내가 문자열이 같은 말해봐 :R은 : R에서 정규 표현식 - 다중 문자열 추출

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

내가 벡터로이 유전자 ID의 각을 추출 할. 이 경우에는 strsplit을 사용할 수는 있지만, 나중에 더 복잡한 경우가 있기 때문에 regex를 사용하여이 작업을 수행하려고합니다. '[A-Z0-9] {2,}를 포함하는 모든 문자열을 추출하려고한다고 가정하십시오 (적어도 두 개의 대문자와 숫자의 조합이 포함 된 경우 원하는 경우).

생각하십니까?

답변

3

stringr 패키지는 이런 종류의 것을 매우 쉽게 만듭니다.

> 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 gsubfn package

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 포.

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은 문자열이 매우 길어서 속도가 중요하고 문자열 만 추출해야하는 경우 특히 유용 할 수 있습니다.