0

我正在努力接受agrep用于模糊匹配的功能。假设你有这样的字符串:

x <- c("me", "mum", "mm", "my", "mm mm", "mhm", "mother")

进一步假设我想匹配那些最接近mm. 使用agrep,匹配的相互“接近度”或“距离”由“广义的 Levenshtein 编辑距离(将一个字符串转换为另一个字符串所需的插入、删除和替换的最小可能加权数”(来自 R 文档agrep)来衡量。据我了解,Levenshtein 距离有效地反映了转换的成本。因此,例如,如果参数cost设置为0,则agrep返回mmand mm mm,这是可以预期的,因为两个字符串需要零转换:

agrep("mm", x, max.distance = list(cost = 0), value = T)
[1] "mm"    "mm mm"

但是,如果cost设置为 的(荒谬的)一小部分1,则所有字符串都匹配,尽管看起来,例如转换mothermm涉及至少两个操作,即 (i) 删除other和 (ii) 将其替换为m因此应该更加“昂贵”来实现:

agrep("mm", x, max.distance = list(cost = 0.000000000000000000000000000000001), value = T)
[1] "me"     "mum"    "mm"     "my"     "mm mm"  "mhm"    "mother"

我的猜测是,我并不真正了解agrep它的论点是如何工作的,尤其是距离是如何计算的,因此非常感谢有关此问题的专家指导。

4

0 回答 0