我在R中使用’agrep’功能,返回一个匹配的向量.我想要一个类似于agrep的功能,只能返回最佳匹配,或者如果有关系,最好的匹配.目前,我正在使用结果向量的每个元素上的’cba’包中的’sdist()’函数,但这似乎是非常多余的.
/ edit:这里是我目前使用的功能.我想加快速度,因为计算两次距离似乎是多余的.
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,2)) matches <- data.frame(matches,as.numeric(distance)) matches <- subset(matches,distance==min(distance)) as.character(matches$matches) } ClosestMatch(word,words)
解决方法
RecordLinkage包从CRAN中删除,使用stringdist:
library(stringdist) ClosestMatch2 = function(string,stringVector){ stringVector[amatch(string,stringVector,maxDist=Inf)] }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。