2017-04-05 132 views
1

我想計算兩個任意序列之間的Levenshtein距離。任意序列的Levenshtein /編輯距離

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

edit_distance(a, b) == 1 

我知道adist功能和stringdist包,但他們只對特徵向量工作。如果序列中的符號數量很少,我可以將它們編碼爲字符並使用上述功能。

但是通常會有1000個不同的符號。另一種選擇是將它們編碼爲Unicode字符(adist適用於它們:adist("\U00001", "\U00001\U00002")),但我不知道如何執行此操作。

+0

也許'jmotif'包將是值得一試。不確定它正是你正在尋找的東西,但有一些重疊。 – lmo

回答

2

您可以使用intToUtf8你的整數映射到Unicode字符:

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

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