Levenshtein/编辑任意序列的距离

Levenshtein / edit distance for arbitrary sequences

我想计算两个任意序列之间的 Levenshtein 距离。

a <- 1:100
b <- c(1, 1:100)

edit_distance(a, b) == 1

我知道 adist 函数和 stringdist 包,但它们只适用于字符向量。如果序列中的符号数量很少,我可以将它们编码为字符并使用上述函数。

但通常会有大约 1000 个不同的符号。另一种选择是将它们编码为 Unicode 字符(adist 适用于它们:adist("\U00001", "\U00001\U00002")),但我不知道该怎么做。

您可以使用 intToUtf8 将整数映射到 Unicode 字符:

a2 <- intToUtf8(a)
b2 <- intToUtf8(b)

adist(a2, b2)
#      [,1]
# [1,]    1