我正在使用R中的'agrep'函数,它返回一个匹配向量。 我想要一个类似于agrep的函数,只返回最佳匹配或如果有平局则返回最佳匹配。 目前,我对结果向量的每个元素都使用'cba'包中的'sdist()'函数进行操作,但这似乎非常冗余。
/编辑:这是我目前正在使用的函数。 我想加快速度,因为计算两次距离似乎很冗余。
library(cba)
word <- 'test'
words <- c('Teest','teeeest','New York City','yeast','text','Test')
ClosestMatch <- function(string,StringVector) {
matches <- agrep(string,StringVector,value=TRUE)
distance <- sdists(string,matches,method = "ow",weight = c(1, 0, 2))
matches <- data.frame(matches,as.numeric(distance))
matches <- subset(matches,distance==min(distance))
as.character(matches$matches)
}
ClosestMatch(word,words)
RecordLinkage
包再次在 CRAN 上可用(截至 2016-05-02 版本为 0.4-9)。 - Uwe