2013-10-15 2 views
1

regexpr의 출력을 이해하는 데 도움이 될 수 있습니까? 나는 텍스트 위치 10에 관심이있다. 그러나 10과 4의 두 값을 보여줍니다. 어떻게 10 번만 캡처합니까?R - regexpr의 출력 이해

이 출력은 숫자 벡터입니까?

text<-"World is beautiful" 
out<-regexpr("beau",text) 
out 
#[1] 10 
#attr(,"match.length") 
#[1] 4 
#attr(,"useBytes") 
#[1] TRUE 
out[1] 
#[1] 10 
out[2] 
#[1] NA 

답변

0

regexpr의 도움말 페이지에서. R 콘솔에 ?regexpr을 입력하면됩니다. 텍스트가 첫 경기의 시작 위치를 제공하거나 같은 길이의 정수 벡터를 반환

RegExpr는 -1 "match.length" 속성을 가진 것도,의를 지정하는 정수 벡터가없는 경우 일치하는 텍스트의 길이 (또는 일치하지 않는 경우 -1). useBytes = TRUE가 사용되는 경우를 제외하고 일치 위치와 길이는 문자로 된 입니다 (바이트 단위). 명명 된 캡처를 사용하는 경우 추가 특성 "capture.start", "capture.length"및 "capture.names"가 있습니다.

1

out는 ... 속성을 가진 length 1L 원자 벡터이다

str(out) 
atomic [1:1] 10 
- attr(*, "match.length")= int 4 
- attr(*, "useBytes")= logi TRUE 

out (특성을 떨어 c(out) 시도) 일치하는 특성 벡터의 개시 위치를 나타내는 10 인 값 당신의 패턴. attr(out , "match.length")은 일치 길이를 나타내는 [1] 4입니다.

text 문자열은 하나의 요소 길이이므로 out은 하나의 요소입니다. 시도하십시오 regexpr("beau",rep(text,3)).

+0

감사합니다. Simon – user2882768

+0

@ user2882768 감사합니다. 이 질문이나 답장이 질문에 만족 스럽다면 수락 할 질문을 선택해야합니다. 그러면이 질문은 답변으로 표시됩니다. 기분이 좋으면 좋아하는 답변 옆의 작은 녹색 체크 표시를 누를 수 있습니다! 자세한 내용은 웹 사이트의 [** about **] (http://stackoverflow.com/about) 및 [** FAQ **] (http://stackoverflow.com/faq) 섹션을 참조하십시오. SO에 오신 것을 환영합니다! –