정수 벡터는 하나의 유니 코드 코드 포인트가 단일 32 비트 정수로 표시되는 UTF-32로 인코딩 된 단일 문자열로 볼 수 있습니다. intToUtf8
을 사용하여 이러한 벡터를 UTF-8로 변환하면 "일반"문자열을 얻을 수 있습니다. 그런데
intToUtf8(c(65, 97))
## [1] "Aa"
,
adist
의 입력에 기본적으로
utf8ToInt
(연산 역) 어쨌든 않습니다. 따라서 내부적으로 정수 벡터에 따라 결과를 계산합니다. 큰 해킹이 아니야.
이것은 해결책입니다.
adist(intToUtf8(c(1, 3, 4, 5, 6, 7, 8)), intToUtf8(c(54, 23, 12, 53, 7, 8)), counts=TRUE)
## [,1]
## [1,] 5
## attr(,"counts")
## , , ins
##
## [,1]
## [1,] 0
##
## , , del
##
## [,1]
## [1,] 1
##
## , , sub
##
## [,1]
## [1,] 4
##
## attr(,"trafos")
## [,1]
## [1,] "SSSSDMM"
적어도 모든 숫자가 R은 (너무 자유롭게, 사실,하지만이 경우에 당신이 우승자) 매우 자유롭게 유니 코드 코드 포인트를 취급 엄격 큰 0보다 경우에 위의 코드는 작동합니다, 가능한 가장 큰 정수도 허용됩니다.
utf8ToInt(intToUtf8(c(2147483647)))
## 2147483647
음수 값을 가진 벡터가있는 경우 어떻게 든 변환 할 수 있습니다. x <- x-min(x)+1
.
삽입, 제거, 교체에 대해 다른 비용이 필요하면 adist's
costs
인수를 확인하십시오. stringdist이라는 패키지에도 다른 많은 문자열 메트릭이 포함되어 있습니다. 위의 구성표도 거기에서 작동해야합니다.
26^3> 2000입니다. 따라서'combn (letters, 3)' –
을 사용해보십시오. combn (c (letters, LETTERS), 2)는 더 좋을 것입니다. 하지만 그것은 중요한 질문이 아닙니다. – Usobi