Вопрос: Как сравнить две строки, чтобы найти количество символов, совпадающих в R, используя расстояние замещения?


В R у меня есть два символьных вектора: a и b.

a <- c("abcdefg", "hijklmnop", "qrstuvwxyz")
b <- c("abXdeXg", "hiXklXnoX", "Xrstuvwxyz")

Я хочу функцию, которая учитывает несоответствия символов между каждым элементом a и соответствующим элементом b. Используя вышеприведенный пример, такая функция должна возвратиться c(2,3,1), Нет необходимости выровнять строки. Мне нужно сравнить каждую пару строк по символам и совпадениям и / или несоответствия в каждой паре. Существует ли такая функция в R?

Или, чтобы задать вопрос по-другому, есть ли функция, чтобы дать мне расстояние редактирования  между двумя строками, где единственной разрешенной операцией является замена (игнорировать вставки или удаления)?


6


источник


Ответы:


Использование некоторых mapply весело:

mapply(function(x,y) sum(x!=y),strsplit(a,""),strsplit(b,""))
#[1] 2 3 1

6



Другим вариантом является использование adist которые вычисляют приблизительное расстояние строки между символьными векторами:

mapply(adist,a,b)
abcdefg  hijklmnop qrstuvwxyz 
     2          3          1 

0