2016-09-10 8 views
1

이 함수의 인수를 이해하려면 도움이 필요합니다. 나는 도움으로부터 모범을 ​​보았습니다.adist 및 agrep 함수에서 비용 인수를 설정하는 방법은 무엇입니까?

## To see the transformation counts for the Levenshtein distance: 
drop(attr(adist("kitten", "sitting", counts = TRUE), "counts")) 
# ins del sub 
# 1 0 2 

ins는 삽입을 나타냅니다. 삭제를위한 del; 대체 용 sub. 이에서

## To see the transformation sequences: 
attr(adist(c("kitten", "sitting"), counts = TRUE), "trafos") 
#  [,1]  [,2]  
# [1,] "MMMMMM" "SMMMSMI" 
# [2,] "SMMMSMD" "MMMMMMM" 

한 비자는 문자열 두 경쟁 문자열을 비교하면서, 그것은 SMMMSMI를 찾는 것을 쉽게 알 수있다; 2 치환 및 1 삽입, 총 거리는 3이어야합니다.

adist("kitten", "sitting", costs = list(ins=1, del=0, sub=1), partial = F) 
#  [,1] 
# [1,] 3 

이것은 I가 0 삽입의 비용을 설정할 때, 결과가 총 거리에서 제로 왜,하지 않는 것입니다. 나는 대체 숫자 때문에 2가 될 것으로 기대한다.

adist("kitten", "sitting", costs = list(ins=0, del=0, sub=1), partial = F) 
#  [,1] 
# [1,] 0 

고마워요.

답변

1

이것은 당신이 실제 카운트를 살펴 경우처럼 각 작업에 대한 비용을 지정하면서 설명하기 쉽습니다 :

drop(attr(adist("kitten", "sitting", costs = list(ins=0, del=0, sub=1), 
       partial = F, counts = T), "counts")) 

# ins del sub 
# 6 5 0 

그래서 당신이 볼 그 대신 :

# ins del sub 
# 1 0 2 

다른 비용 매개 변수 세트를 기본값에서 지정하면 삽입, 삭제 및 대체 작업 수가 변경됩니다. 이 다른 하나의 문자열을 변환하는 하나 이상의 방법이며 adist의 거리이기 때문에 이것은 ?adist에있어서, 말이 :

일반화 Levenshtein (편집) 거리, 삽입의 최소 가능 가중 번호주는 , 삭 제 및 대체는 한 문자열을 다른 문자열로 변환하는 데 필요합니다. 우리가 제로로 insertionsdeletions 비용 매개 변수를 지정하면

이 성명에 따르면, 다음은 substitution 작업을 사용하지 않습니다, 거기에 cost 매개 변수에 의해 가중 작업의 수를 최소화하기 위해 후드 최적화, 그래서한다 이전의 두 연산은 분명히 비용이 덜 듭니다. 실제로 두 연산의 비용이 0이므로 0 거리로 끝나는 변환을 완료하기 위해 6 개의 삽입과 5 개의 삭제를 사용합니다.