使用R在另一个区间内查找间隔

时间:2017-08-07 19:42:56

标签: r intervals

我试图找到一个间隔列表是否在使用R的另一个间隔列表内。例如:

list1的

     start         end
     100           500
     700           800

list2

    start          end
    200            300
    800            850

预期输出为

     TRUE
     FALSE

所以我尝试过这样的事情:

        for (i in nrow(list1)){
          for (j in nrow(list2)){
            if ((list1[i, 1] <= list2[i,1]) & (list1[i, 2] >= list2[i,2])){
              print(list1[i, 1]) 
              }
            }
          }

但是没有用。这两个列表也没有相同的长度,并且可能是第二个列表的几个间隔将位于第一个列表的单个间隔中。

有什么想法吗?

提前谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用any查看list2中的行是否在list1

中定义的任何范围内
sapply(1:NROW(list2), function(i)
    any(list2$start[i] > list1$start & list2$end[i] < list1$end))
#[1]  TRUE FALSE

数据

list1 = structure(list(start = c(100, 700), end = c(500, 800)), .Names = c("start", 
"end"), row.names = c(NA, -2L), class = "data.frame")

list2 = structure(list(start = c(200, 800), end = c(300, 850)), .Names = c("start", 
"end"), row.names = c(NA, -2L), class = "data.frame")