Как я могу найти такой же шаблон среди строк? - PullRequest
0 голосов
/ 08 мая 2018

Я хотел бы извлечь тот же шаблон из строк, скажем,

a <- "abczzzzz"
b <- "rrrrabckkk"

Я бы хотел получить результат "abc", например

somefunction(a,b)
> "abc"

проверил пакет stringr, однако все эти функции требуют известного шаблона, которого у меня нет, и невозможно узнать nchar шаблона, поэтому я предпочитаю самый длинный шаблон сопоставления. Пожалуйста, посоветуйте, спасибо.

UPDATE ---

На самом деле, я работаю с массивным набором данных, как будто у меня есть только описания датчиков, и я хочу узнать имя машины, к которой он принадлежит, тогда как имя машины будет самым частым словом в описании. Сравнение букв за буквой выполнимо, и я все еще ищу более эффективный способ. Спасибо! Ответ уже очень помогает мне двигаться вперед.

1 Ответ

0 голосов
/ 08 мая 2018

Мы можем разделить строки на каждый символ и использовать intersect, чтобы получить общие.

intersect(strsplit(a, "")[[1]], strsplit(b, "")[[1]])
#[1] "a" "b" "c"

Чтобы получить точный вывод по запросу, мы можем paste их вместе.

paste(intersect(strsplit(a, "")[[1]], strsplit(b, "")[[1]]), collapse = "")
#[1] "abc"

Если имеется несколько строк, мы можем использовать Reduce (см. Также здесь ):

a <- "abczzzzz"
b <- "rrrrabckkk"
c <- "dsaqwabc"

paste(Reduce(intersect, strsplit(c(a, b, c), "")), collapse = "")
#[1] "abc"
...