R中两个表之间的减分范围
如果我有: df1: 及 df2: 如何获得一个表,其中包含不在R中的df2中的df1间隔 例如,df1的第一行是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中的每一行
(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中间隔的间隔做什么(比如df110…15
和df25…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