1

agrep コマンドを使用して、R で文字列の一致を試みています。ただし、最適なものを見つけるために最適化するのではなく、適切な一致を見つけたときに停止することを懸念しています。それがどのように機能するかについての私の理解が間違っている可能性はありますが。以下の私の例は、大雑把ではありますが、問題を再現しています。

example1 <- c("height","weight")
example2 <- c("height","weight")

y <- c("","")
for( i in 1: 2 ){
x <- agrep(example1[i], example2, max.distance = 1, ignore.case=TRUE, value=TRUE, useBytes=TRUE ) 
x <- paste0(x,"")
y[i] <- x
  }

うまくいけばわかるように、agrep は体重と身長を一致させますが、体重の方が適切であり、また存在します。

どうしてこれなの?

4

1 に答える 1

1

adist (一般化されたレーベンシュタイン (編集) 距離) を試すと、次の結果が得られます (example1 の「高さ」が example2 の高さと最も​​よく一致するなど):

adist(example1, example2)
     [,1] [,2]
[1,]    0    1
[2,]    1    0

example2[apply(adist(example1, example2), 1, which.min)]
# [1] "height" "weight"
于 2016-11-23T16:33:26.163 に答える