使用 R 在另一个区间内找到一个区间
Find an interval inside an other interval using R
我正在尝试使用 R 查找一个区间列表是否在另一个区间列表内。例如:
列表 1
start end
100 500
700 800
列表 2
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])
}
}
}
但是没有用。此外,这两个列表的长度不同,可能是第二个列表的多个间隔在第一个列表的单个间隔中。
有什么想法吗?
提前致谢
您可以使用 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")
我正在尝试使用 R 查找一个区间列表是否在另一个区间列表内。例如:
列表 1
start end
100 500
700 800
列表 2
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])
}
}
}
但是没有用。此外,这两个列表的长度不同,可能是第二个列表的多个间隔在第一个列表的单个间隔中。
有什么想法吗?
提前致谢
您可以使用 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")