самая длинная общая подстрока в 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

Ответы на вопрос(0)

Ваш ответ на вопрос