2017-04-05 7 views
1

任意の2つの配列間の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

あなたは、Unicode文字にあなたの整数をマップするためにintToUtf8を使用することができます。

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

adist(a2, b2) 
#  [,1] 
# [1,] 1 
関連する問題