我正在尝试使用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的体重与身高相匹配。
为什么会这样?
答案 0 :(得分:1)
你可以尝试adist(对于广义的Levenshtein(编辑)距离),结果如下(&#39;高度&#39;来自example1最佳匹配,高度来自example2等):
adist(example1, example2)
[,1] [,2]
[1,] 0 1
[2,] 1 0
example2[apply(adist(example1, example2), 1, which.min)]
# [1] "height" "weight"