2 つの行列 A と B があります。どちらにも名前のリストが含まれています。質問は類似度に基づいています。B から A の要素の最小距離 (行列全体) を見つけます。ハミング距離が 3 より大きい場合、データは行列 B に追加されます。そうでない場合は追加されません。例を挙げましょう
A<-c("cvombiflam","combiflam")
A<-as.matrix(A)
B<-c("windfall","computer","baseball")
B<-as.matrix(B)
ここで、A1 は B を検索し、ハミング距離に関して最も近い B のメンバーを見つけます。最も近いのは B2 です。B[2]で距離を求めます。最近接距離が 3 より大きいため、cvomiflam が B に追加されます。B は次のようになります。
B<-c("windfall",
"computer",
"baseball",
"cvombiflam")
これで、A の 2 番目の要素 ("combiflam") が B を検索します。最も近いのは、距離が 1 の B の 4 番目の要素 (cvombiflam ) です。したがって、combiflam は B に追加されません。最終的な B リストを更新したい
私が書いたコードは次のとおりです。
for(i in 1:length(A))
{
d<-min(stringdistmatrix(A[i],B)
if(d>3)
{
B<-rbind(B,A[i])
}
}
今、私は約 140,000 の A マトリックスと 200,000 の B を持っています。コードは正常に動作していますが、実行に時間がかかります。もっと手っ取り早い方法を教えてください。