R中两个表之间的减分范围

R中两个表之间的减分范围,r,R,如果我有: df1: 及 df2: 如何获得一个表,其中包含不在R中的df2中的df1间隔 例如,df1的第一行是(1..4),由于它与df2中的间隔(3..6)重叠,我想要(1..4)-(3..6),它是(1..2)(即df1的第一行中不在df2中的间隔) 最后,我希望得到如下结果: start end 1 2 7 7 8 9 20 22 我们可以在df2的start和end之间创建一个序列,并将其存储在vals中。对于df1中的每一行

如果我有:

df1:

df2:

如何获得一个表,其中包含不在R中的df2中的df1间隔

例如,df1的第一行是
(1..4)
,由于它与df2中的间隔
(3..6)
重叠,我想要
(1..4)-(3..6)
,它是
(1..2)
(即df1的第一行中不在df2中的间隔)

最后,我希望得到如下结果:

  start end
     1   2
     7   7
     8   9
    20  22

我们可以在
df2
start
end
之间创建一个序列,并将其存储在
vals
中。对于
df1
中的每一行,我们可以只包括
VAL
中不存在的那些值的
范围

vals <- unlist(Map(seq, df2$start, df2$end))
t(apply(df1, 1, function(x) range(setdiff(x[1]:x[2], vals))))

#     [,1] [,2]
#[1,]    1    2
#[2,]    7    7
#[3,]    8    9
#[4,]   20   22

VAL您能否给出一个更详细的示例,说明df1和df2如何成为您的结果。因此,必须将一行df1与所有df2行进行比较???这里重叠的含义是什么?我不清楚你想对df1中完全包含df2中间隔的间隔做什么(比如df1
10…15
和df2
5…20
)。嗨,这里有4种重叠,即,df2中的范围可以是1)在df1中的范围内,或2)完全覆盖df1中的范围,或3)df1中的开始在df2中的范围内,或4)df1中的结束在df2中的范围内。是否要显示您希望输出在每种情况下的外观?
  start end
     1   2
     7   7
     8   9
    20  22
vals <- unlist(Map(seq, df2$start, df2$end))
t(apply(df1, 1, function(x) range(setdiff(x[1]:x[2], vals))))

#     [,1] [,2]
#[1,]    1    2
#[2,]    7    7
#[3,]    8    9
#[4,]   20   22