J'utilise la fonction 'agrep' dans R, qui renvoie un vecteur de correspondances. Je voudrais une fonction similaire à agrep qui ne renvoie que la meilleure correspondance, ou les meilleures correspondances s'il y a des liens. Actuellement, je le fais en utilisant la fonction 'sdist()' du paquet 'cba' sur chaque élément du vecteur résultant, mais cela semble très redondant.agrep: seulement retourner le (s) meilleur (s) résultat (s)
/edit: voici la fonction que j'utilise actuellement. Je voudrais l'accélérer, car il semble redondant pour calculer la distance deux fois.
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)
Le package 'RecordLinkage' est disponible sur CRAN, encore une fois (Version 0.4-9 du 2016-05-02. – Uwe