【发布时间】:2018-06-28 21:57:48
【问题描述】:
如果我有包含 3 个或更多数据框的列表。每个都有间隔,然后我想找出这些间隔之间是否有交集。如果它们相交,我们需要删除相交。例如
d1<-cbind(st=c(1,4,6),ed=c(7,8,10)); d2<-cbind(st=c(4,8,17),ed=c(7,12,20)); d3<-cbind(st=c(1,8,25),ed=c(3,13,30))
l<-list(d1,d2,d3); l
为了便于可视化,我绘制了它们,黑色间隔来自 d1,蓝色 d2 和红色 d3。这个想法是删除相交区域,例如 d1 中的间隔 1 和 d2 中的 1 和 d3 中的 1 相交。我希望结果是
d2; st ed
17 20
d3; st ed
13 13
25 30
d1 将被删除,因为它的间隔与 d2 和 d3 中的其他间隔重叠。比较应该同时进行,这意味着从一个数据帧中的所有区间中找到与其他数据帧中的其他区间重叠的区域并同时删除它们。 我将不胜感激任何想法或建议
编辑:我想分离区间找到不与任何其他区间重叠的新区间(感谢西蒙帮助澄清这一点)但重要的是在将区间分离为一些重叠之前检查所有可能的交叉点如果之前没有比较间隔,则可能会消失。分离前的原始区间图
【问题讨论】:
-
我无法弄清楚你的情节中的间隔将如何产生你的预期输出。您能否更详细地解释您想要达到的结果。您想找出不与任何其他区间重叠的区间吗?
-
没错,我想分离区间找到不与任何其他区间重叠的新区间。原始区间的图只是为了显示预期结果是如何产生的。
-
为什么不显示创建情节的代码?