我试图找到一个间隔列表是否在使用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])
}
}
}
但是没有用。这两个列表也没有相同的长度,并且可能是第二个列表的几个间隔将位于第一个列表的单个间隔中。
有什么想法吗?
提前谢谢
答案 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")