2014-06-17 3 views
1

문자열에서 문자가 일치하기 전에 문자 삽입 횟수를 계산하고 싶습니다. adist() 함수 출력에서 ​​"trafos" 특성을 추출하여 변환 문자열을 반환합니다. 내가 관심이있는 문자의 하나의 인스턴스 만있을 때이 잘 작동합니다. 예를 들어, 따라서 "M"전에 "I"의 수를 계산adist에서 다중 일치 처리

attr(adist("r","world",counts=T),"trafos") 

반환

 [,1] 
[1,] "IIMII" 

내 대답을 줄 것이다 : 2

그러나 여러 인스턴스가있을 때 함수는 최종 인스턴스에 대해 일치하는 경우에만 반환합니다. 예를 들어,

attr(adist("r","barry",counts=T),"trafos") 

반환

 [,1] 
[1,] "IIIMI" 

나는 "IIMMI"적어도 "IIMII"를 반환하는 adist()을 얻을 수있는 방법이 있나요

? 아마도 내가 켜야 할 다른 기능이나 옵션일까요? 내 기능을 양조하는 것이 좋습니까? 당신의 도움이

답변

0

이에 대한

덕분에 특히 우아한 해결책은 아니지만 충분히 좋은 수 있습니다.

parts <- strsplit("barry", "r")[[1]]

nchar(parts[1])

편집을 시도해보십시오 나는 함수에 넣고.

nchar.before = function(before, string) 
{ 
    parts = strsplit(string, before) 

    return(as.numeric(lapply(parts, function(v) nchar(v[1])))) 
} 

예 :

strings = c("rabc", "abcr", "abcrabcr", "abcabc") 
nchar.before(before = "r", string = strings) 

출력 "R"은 거기에 있지 않은 경우, 문자열의 전체 길이를 출력하는 방법 0 3 3 6 참고. 대신 이것을 수정하여 NA 또는 다른 것을 생성 할 수 있습니다.

+0

신난다. 그냥 사용해 보았다. 고맙습니다! – cgonza12