Другие вопросы :
У меня есть куча подстрок (синих), покрывающих большую строку (красным):
Что мы можем поместить в фрейм данных примерно так:
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](https://i.stack.imgur.com/0Kec3.png)
Я попытался сначала создать кадр данных с 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 позицийкаждый.Затем мне все еще нужно идентифицировать группы без перехвата и выбрать самую длинную подстроку, поэтому я думаю, что должен быть более простой способ сделать это?