Расстояние Дамерау-Левенштейна между двумя строками abc и acb будет равно 1, потому что оно включает одну транспозицию между b и c.
> stringdist("abc", "acb", method = "dl")
[1] 1
Теперь предположим, что у меня есть следующие два вектора символов:
A = c("apple", "banana", "citrus")
B = c("apple", "citrus", "banana")
Как рассчитать расстояние Дамерау-Левенштейна между A и B, чтобы результат был идентичен расстоянию между abc и acb, поскольку между цитрусовыми и бананом существует одна транспозиция? Другими словами, как рассчитать расстояние Дамерау-Левенштейна между A и B, чтобы каждый элемент считался одним символом в строке?
abs(match(A, B) - seq_along(A))
, если предположить, что оба этих атомных вектора содержат одни и те же элементы, только в другом порядке, также A является ссылкой - person PKumar   schedule 31.03.2021stringdist(paste(substr(A, 1, 1), collapse=""), paste(substr(B, 1, 1), collapse=""), method="dl")
? (кстати,stringdist
не является базовой функцией R, пожалуйста, включите загрузку пакета в свой вопрос) - person Cath   schedule 31.03.2021