R: Найти самую длинную не перекрывающуюся подстроку - PullRequest
0 голосов
/ 17 апреля 2019

Другие вопросы :

У меня есть куча подстрок (синих), покрывающих большую строку (красным): enter image description here Что мы можем поместить в фрейм данных примерно так:

sub.strings <- data.frame(
  start = c(10, 20, 13, 70, 80),
  end = c(50, 60, 85, 100, 95)
)
>sub.strings
  start end
1    10  50
2    20  60
3    13  85  #<-- end first non overlapping part
4    70 100
5    80  95  #<-- end second non overlapping part

Тогда наперекрывающаяся часть (показана пунктирными линиями) Я хочу получить самую длинную найденную подстроку (фиолетовым цветом): enter image description here

Я попытался сначала создать кадр данных с position = seq(min(sub.strings$start), max(sub.strings$end)), затем яМожно добавить столбцы для каждой из подстрок, чтобы указать покрытые позиции, например так: ....

pos    sub.string.1  sub.string.2

    10  1             0
    11  1             0
    ..  1             1
    50  1             1
    ..  0             1
    60  0             1

Даже один только кадр данных станет довольно большим, так как у меня более 30 000 подстрок, охватывающих> 400 позицийкаждый.Затем мне все еще нужно идентифицировать группы без перехвата и выбрать самую длинную подстроку, поэтому я думаю, что должен быть более простой способ сделать это?

...