Я хотел бы использовать foverlaps (), чтобы выполнить соединение с перекрывающимся диапазоном. Проблема, с которой я столкнулся, заключается в том, что аргумент maxgap
не был реализован, и я только что заметил, что слияние не возвращает все значения из двух таблиц, которые нужно объединить, даже при выборе type = "any", mult="all"
. Смотрите здесь:
range_one =
data.table(
seqnames = rep(11, 8),
start = c(5617339, 5624476, 5625764, 5626567, 5629602, 5631375, 5631765, 5632007),
end = c(5617339, 5624476, 5625764, 5626567, 5629602, 5631375, 5631765, 5632007),
exon_rank = c(1:8)
)
range_one =
data.table(
seqnames = rep(11, 8),
start = c(5617886, 5624476, 5625764, 5626567, 5629602, 5631375, 5631765, 5632007),
end = c(5618144, 5624965, 5625859, 5626797, 5629624, 5631475, 5631791, 5634182),
exon_rank = c(1:8)
)
> range_one
seqnames start end exon_rank
1: 11 5617339 5617411 1
2: 11 5624476 5624965 2
3: 11 5625764 5625859 3
4: 11 5626567 5626797 4
5: 11 5629602 5629624 5
6: 11 5631375 5631475 6
7: 11 5631765 5631791 7
8: 11 5632007 5634182 8
> range_two
seqnames start end exon_rank
1: 11 5617886 5618144 1
2: 11 5624476 5624965 2
3: 11 5625764 5625859 3
4: 11 5626567 5626797 4
5: 11 5629602 5629624 5
6: 11 5631375 5631475 6
7: 11 5631765 5631791 7
8: 11 5632007 5634182 8
setkey(range_one, seqnames,start,end)
setkey(range_one, seqnames,start,end)
> foverlaps(range_one,range_two, type = "any", mult="all")
seqnames start end exon_rank i.start i.end i.exon_rank
1: 11 NA NA NA 5617339 5617411 1
2: 11 5624476 5624965 2 5624476 5624965 2
3: 11 5625764 5625859 3 5625764 5625859 3
4: 11 5626567 5626797 4 5626567 5626797 4
5: 11 5629602 5629624 5 5629602 5629624 5
6: 11 5631375 5631475 6 5631375 5631475 6
7: 11 5631765 5631791 7 5631765 5631791 7
8: 11 5632007 5634182 8 5632007 5634182 8
Обратите внимание на то, как первая строка из range_two
теряется в результате foverlaps.
Как я могу убедиться, что ВСЕ диапазоны с обеих сторон возвращены независимо от того, полностью или частично они перекрываются, или нет вообще?