r中数据帧中的重叠间隔

Max*_*_IT 7 r dataframe

我正在尝试用R研究基因组数据,我已经看到了几个主题,它们有两个数据帧和重叠区间相关的很好的答案.我的问题是我有一个重叠间隔的数据帧,我想合并,即:

chrom   start   stop
 5       100     105
 5       100     105
 5       200     300
 9       275     300
 9       280     301
Run Code Online (Sandbox Code Playgroud)

我想最终得到这样的东西:

chrom   start   stop
 5       100     105
 5       200     300
 9       275     301
Run Code Online (Sandbox Code Playgroud)

我也在努力改进编码,所以我想知道最优雅的方法是什么.希望这不是一些其他查询的冗余,

Aru*_*run 16

使用GenomicRanges :: reduce:

require(GenomicRanges)
as.data.frame(reduce(GRanges(df$chrom, IRanges(df$start, df$stop))))
#   seqnames start end width strand
# 1        5   100 105     6      *
# 2        5   200 300   101      *
# 3        9   275 301    27      *
Run Code Online (Sandbox Code Playgroud)

它也可以使用data.table::foverlapsGenomicRanges::findOverlaps,但不是那么简单.