我在数据框中有间隔,如下所示:
df=data.frame(Id=rep("A1",23),start=c(11176,11176,11176,11176,11176,11176,11176,11177,11177,11177,11177,11177,11177,11178,11178,11179,11179,11179,11233,11233,11233,11233,11233),end=c(11205,11206,11206,11206,11206,11206,11207,11206,11206,11208,11206,11208,11209,11206,11206,11203,11204,11204,11263,11263,11263,11263,11264))
此外,我的查询位置为" 11180
"。现在我想从11180
所属的区间开始重叠间隔。我的意思是我的查询位置(11180
)位于df" 11176
"的第一个间隔之间。和111205
。因此,我采用此间隔(11176 and 111205
)并查找重叠11176
和111205
的间隔。稍后重叠11176 and 111205
的重叠间隔的间隔等等,直到找不到重叠并返回该间隔。我希望我的代码能够将11179
和11204
作为最后重叠的时间间隔,但不知何故它仅报告11178
和11206
。以下是我的代码
for(i in 1:dim(df)[1])
{
final_start=temp_start
final_end=temp_end
if((findInterval(final_end,c(df$start[i],df$end[i]),rightmost.closed = T,left.open = T)==1L) || (findInterval(final_start,c(df$start[i],df$end[i]),rightmost.closed = T,left.open = T)==1L))
{
final_start=df$start[i]
final_end=df$end[i]
print(final_start)
print(final_end)
}
}
上面的代码将查询范围作为输入,并将起始和结束存储在temp_start和temp_end中。稍后它会检查temp_end或temp_start是否在数据框df
中的间隔范围内。任何指导对我都非常有用。提前致谢。如果您需要更多详细信息,请与我们联系。