给定四列(FromUp,ToUp,FromDown,ToDown)中的值时,其中两个总是定义一个范围(FromUp,ToUp和FromDown,ToDown)。我如何测试两个范围是否重叠。指出范围值未被排序是很重要的,所以“From”值可以高于“To”值,反之亦然。检查两个区间是否重叠在R
一些示例数据:
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)并且比较它们?
任何帮助,将不胜感激。
@akrun等人,可以请你展示如何'foverlaps()'可以用来解决这个问题吗?也许我错误地理解了这个问题。 –
我也很难看到你在这种情况下如何使用'foverlaps'。由于'foverlaps'需要设置键,相应列的顺序会发生变化,而这个问题需要按行进行比较。 – Jaap