【发布时间】:2015-12-29 18:55:13
【问题描述】:
我有两组 IRange 进行比较。我的目标是获得一个具有重叠位置的输出(如果存在重叠),并且如果它们不重叠,则将范围的偏移列为负开始。至少如果我无法获得偏移量,我希望获得一个“0”来表示没有重叠。例如:
xx<-IRanges(start=c(2,9,19,31,45), end=c(3,11,23,35,49))
IRanges of length 5
start end width
[1] 2 3 2
[2] 9 11 3
[3] 19 23 5
[4] 31 35 5
[5] 45 49 5
和
yy<-IRanges(start=c(4,10,19,33,45), end=c(5,13,25,38,48))
IRanges of length 5
start end width
[1] 4 5 2
[2] 10 13 4
[3] 19 25 7
[4] 33 38 6
[5] 45 48 4
使用 findOverlaps + 范围给我:
> fo <-findOverlaps(xx,yy)
> ranges(fo, xx, yy)
IRanges of length 4
start end width
[1] 10 11 2
[2] 19 23 5
[3] 33 35 3
[4] 45 48 4
我希望最终输出是一个数据框或类似这样的东西:
start end width
[1] -1 0 0
[2] 10 11 2
[3] 19 23 5
[4] 33 35 3
[5] 45 48 4
我能够使用 countOverlaps 获取重叠范围的索引,并使用 findOverlaps + 范围获取 hits 对象进行比较,但不知道如何组合结果以获得所需的输出。
【问题讨论】:
-
如果您根据您的问题制作一个可重复的最小示例,我们更有可能为您提供帮助。我们可以使用和使用的东西向您展示如何解决您的问题。您可以查看this SO post,了解如何在 R 中制作出色的可重现示例。
-
很好的可重现示例。一个自发的问题。您是否尝试过在
findOverlaps()调用中调整maxgap? -
@EricFail 当我玩 maxgap 时,它最终在范围调用中出错。