2016-08-01 2 views
-1

내가 여러 문자열이 문자열을 분할 할 :R에서 str_split()을 사용하는 방법?

BAA33520.2 |/유전자 = "vpf402를"/ 제품 = "Vpf402"| GI : 8272373이 | | AB012574 7347 {가입 : 7965 0 : 591}

구분 기호는 | (아스키 124).
다른 모든 구분 기호와 작동하지만이 기호와는 작동하지 않습니다.

+0

추신 : 분할 기능을 사용하면 해당 문자열을 분리 할 필요가 없습니다. 분리기로 사용됩니다. – CLM

+0

당신은 무엇을 실패 했습니까? – hrbrmstr

+1

탈출을 시도 했습니까? 즉,'\\ |' – aosmith

답변

5

?regex

두 정규식 중위 | 운영자에 의해 결합 될 수있다; 결과 정규 표현식은 하위 표현식 중 하나와 일치하는 모든 문자열을 찾습니다. 예를 들어 abba|cdeabba 문자열 또는 cde 문자열과 일치합니다. 문자 클래스 내에서는 번갈아 가며 작동하지 않습니다. 여기서 |은 문자 그대로 의미가 있습니다.

기본 구성 요소는 단일 문자와 일치하는 정규 표현식입니다. 모든 글자와 숫자를 포함한 대부분의 문자는 일치하는 정규 표현식입니다. 특수한 의미를 갖는 메타 문자는 앞에 백 슬래시를 붙여 인용 할 수 있습니다. 확장 정규 표현식의 메타 문자는 . \ | () [ {^$ * + ?입니다. 그러나 이들이 특별한 의미를 갖는지 여부는 문맥에 따라 다릅니다. 따라서

:

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 패키지를 공부하는 것이 좋습니다.

+1

베이스 R에서,이 'strsplit ('BAA33520.2 |/gene = "vpf402",/product = "Vpf402"| GI : 8272373 | AB012574)를 해결하기 위해 fixed = | 조인 {7347 : 7965, 0 : 591} ', "|", 고정 = TRUE)'. 옵션이 stringr에 포함되어 있지 않은 것 같습니다. – Frank

+0

친애하는 모든 사람들, 당신의 제안에 감사드립니다, 그들은 훌륭하게 일했습니다! – CLM

+0

+1. 그렇다면 미래의 수색자가 문제를 해결 한 답을 알 수 있도록 답 기호를 체크하는 것이 일반적입니다. – hrbrmstr