给定四列值(FromUp,ToUp,FromDown,ToDown),其中两个始终定义一个范围(FromUp,ToUp和FromDown,ToDown)。我如何测试这两个范围是否重叠。重要的是说明范围值没有排序,因此“From”值可以高于“To”值,反之亦然。
一些示例数据:
FromUp<-c(5,32,1,5,15,1,6,1,5)
ToUp<-c(5,31,3,5,25,3,6,19,1)
FromDown<-c(1,2,8,1,22,2,1,2,6)
ToDown<-c(4,5,10,6,24,4,1,16,2)
ranges<-data.frame(FromUp,ToUp,FromDown,ToDown)
因此,结果应如下所示:
FromUp ToUp FromDown ToDown Overlap
5 5 1 4 FALSE
32 31 2 5 FALSE
1 3 8 10 FALSE
5 5 1 6 TRUE
15 25 22 24 TRUE
1 3 2 4 TRUE
6 6 1 1 FALSE
1 19 2 16 TRUE
5 1 6 2 TRUE
我尝试了一些方法,但没有使它正常工作,特别是间隔不是“排序”的事情让我很难用我的R技能找到解决方案。我想过找到成对列(如FromUp,ToUp)的最小值和最大值,然后进行比较?
希望得到任何帮助。
foverlaps()
来解决这个问题?也许我对问题的理解有误。 - Martin Morganfoverlaps
。由于foverlaps
需要设置键,因此相应列的顺序会改变,而此问题需要逐行比较。 - Jaap