самая длинная общая подстрока в R, находящая несмежные совпадения между двумя строками
У меня есть вопрос, касающийся поиска самой длинной общей подстроки в R. При поиске в нескольких сообщениях в StackOverflow я узнал о пакете qualV. Однако я вижу, что функция LCS в этом пакете фактически находит все символы из строки1, которые присутствуют в строке2, даже если они не являются смежными.
Чтобы объяснить, если строки являются string1: "высокоэнергетический лазервот "string2:"высокоэнергетический лазер12345lo "Я ожидаю, что выход будетвысокоэнергетический лазерОднако я получаю вывод как привет. Я должен делать что-то не так. Пожалуйста, смотрите мой код ниже.
library(qualV)
a= "hello"
b="hel123l5678o"
sapply(seq_along(a), function(i)
paste(LCS(substring(a[i], seq(1, nchar(a[i])), seq(1, nchar(a[i]))),
substring(b[i], seq(1, nchar(b[i])), seq(1, nchar(b[i]))))$LCS,
collapse = ""))
Я также попробовал метод Rlibstree, но я все еще получаю подстроки, которые не являются смежными. Кроме того, длина подстроки также отличается от моих ожиданий. См. Ниже.
> a = "hello"
> b = "h1e2l3l4o5"
> ll <- list(a,b)
> lapply(data.frame(do.call(rbind, ll), stringsAsFactors=FALSE), function(x) getLongestCommonSubstring(x))
$do.call.rbind..ll.
[1] "h" "e" "l" "o"
> nchar(lapply(data.frame(do.call(rbind, ll), stringsAsFactors=FALSE), function(x) getLongestCommonSubstring(x)))
do.call.rbind..ll.
21