Mam pytanie dotyczące znalezienia najdłuższego wspólnego podciągu w R. Podczas przeszukiwania kilku postów na StackOverflow, dowiedziałem się o pakiecie qualV. Jednakże widzę, że funkcja LCS w tym pakiecie faktycznie znajduje wszystkie znaki ze string1, które są obecne w string2, nawet jeśli nie sąsiadują ze sobą.najdłuższy wspólny podciąg w R znalezienie nieciągłych dopasowań pomiędzy dwoma ciągami
Aby wyjaśnić, czy ciągi są łańcuch1: "Hel lo" łańcuch2: "hel 12345lo" Spodziewam wyjście być hel, jednak mam wyjście jako cześć. Muszę robić coś złego. Zobacz mój kod poniżej.
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 = ""))
Próbowałem również metody Rlibstree, ale nadal pobierają ciągi, które nie sąsiadują. Również długość podciągu jest również wyłączona z moich oczekiwań. Patrz poniżej.
> 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
pokrewne pytanie: http://stackoverflow.com/q/16196327/602276 – Andrie
@Andrie, próbowałem metody Rlibstree z linku. Jednak nadal otrzymuję ciągi, które nie sąsiadują ze sobą. Również długość pasującego podciągu jest wyłączona. Dodałem informację jako EDYTUJ mój oryginalny post powyżej. Proszę spojrzeć. – IAMTubby
Aby wyjaśnić: funkcja 'LCS' funkcji qualV nie znajduje najdłuższego wspólnego podciągu, znajduje najdłuższy wspólny * podciąg * - stąd wynik, który uzyskujesz. To jest definicja podciągu. Problemy te są ze sobą powiązane, ale mają zupełnie inne rozwiązania, a najdłuższy wspólny problem z podsekwencją * jest bardziej klasycznym problemem w informatyce, a więc jest tym częściej wdrażany. –