2016-10-31 3 views
2

긴 문자열의 벡터에서 첫 번째 일치하는 문자열을 찾으려고합니다. 나는 예를 들어 가지고 example_string <- 'LionabcdBear1231DogextKittyisananimalTurtleisslow'와 지금 matching_vector<- c('Turtle',Dog') 나는 이것이 우리가 예를 들어 문자열에서 볼 수있는 matching_vector의 첫 번째 서브 스트링으로는 '개'를 반환합니다 : 긴 문자열의 첫 번째 일치하는 문자열 찾기 R

가 이미 pmatch(example_string,matching_vector)을 시도했지만 extKittyisananimalTurtleisslow LionabcdBear1231 이 개 그 작동하지 않습니다. 분명히 하위 문자열과 함께 작동하지 않기 때문에 ...

감사! 팀

+1

에서 stri_match_first을 사용할 수 있습니다 stri_match_first (example_string, 정규식 = 붙여 넣기 (matching_vector을 붕괴 = "|"))' – akrun

+0

덕분에 @akrun. 이 작품! –

+0

감사합니다. 내 의견을 해결책으로 게시했습니다. – akrun

답변

1

우리는 라이브러리 (stringi)`시도 stringi

library(stringi) 
stri_match_first(example_string, regex = paste(matching_vector, collapse="|")) 
2

다음 해결 방법이 효과가 있습니까?

example_string <- 'LionabcdBear1231DogextKittyisananimalTurtleisslow' 
matching_vector<- c('Turtle','Dog') 
match_ids <- sapply(matching_vector, function(x) regexpr(x ,example_string)) 
result <- names(match_ids)[which.min(match_ids)] 
> result 
[1] "Dog" 
+0

감사합니다.이 방법도 사용할 수 있지만 @ akrun의 솔루션을 사용했습니다! –

관련 문제