längster gemeinsamer Teilstring in R, der nicht zusammenhängende Übereinstimmungen zwischen den beiden Strings findet

Ich habe eine Frage zum Finden der längsten gemeinsamen Teilzeichenfolge in R. Beim Durchsuchen einiger Posts in StackOverflow habe ich das qualV-Paket kennengelernt. Ich sehe jedoch, dass die LCS-Funktion in diesem Paket tatsächlich alle Zeichen aus string1 findet, die in string2 vorhanden sind, auch wenn sie nicht zusammenhängend sind.

Um zu erklären, ob die Zeichenfolgen Zeichenfolge1 sind: " hello "string2:" hel 12345lo "Ich erwarte, dass die Ausgabe @ is hel, aber ich bekomme die Ausgabe als Hallo. Ich muss etwas falsch machen. Bitte beachten Sie meinen Code unten.

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 = ""))

Ich habe auch die Rlibstree-Methode ausprobiert, erhalte aber immer noch nicht zusammenhängende Teilzeichenfolgen. Auch die Länge der Teilzeichenfolge entspricht nicht meinen Erwartungen. Siehe unten.

> 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

Antworten auf die Frage(8)

Ihre Antwort auf die Frage