data.table показывает, как вернуть все диапазоны от x и y? - PullRequest
1 голос
/ 14 июня 2019

Я хотел бы использовать 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.

Как я могу убедиться, что ВСЕ диапазоны с обеих сторон возвращены независимо от того, полностью или частично они перекрываются, или нет вообще?

...