r - 从开始到结束查找最接近的非重叠范围
问题描述
我想找到从第一个开始到最后一个结束位置不重叠的最近范围。知道如何进行吗?在下面的示例中,应过滤掉 c(8, 33) 和 c(155, 161),因为它们与前面的范围重叠。
#Example data
df <- data.frame(
start = c(7,8,14,34,67,92,125,155,170,200),
end = c(13,33,25,66,91,124,155,161,181,214)
)
start end
1 7 13
2 8 33
3 14 25
4 34 66
5 67 91
6 92 124
7 125 155
8 155 161
9 170 181
10 200 214
#Overlapping rows
start end
1 8 33
2 155 161
#Desired output where overlapping rows are filtered away
start end
1 7 13
2 14 25
3 34 66
4 67 91
5 92 124
6 125 155
7 170 181
8 200 214
解决方案
我会将其作为一个简单的循环来执行,因为是否排除一行取决于前一行的计算结果
i <- 2
while(i < nrow(df)) {
if(df$start[i] <= df$end[i - 1]) {
df <- df[-i,]
} else {
i <- i + 1
}
}
df
#> start end
#> 1 7 13
#> 3 14 25
#> 4 34 66
#> 5 67 91
#> 6 92 124
#> 7 125 155
#> 9 170 181
#> 10 200 214
推荐阅读
- python - 如何定义保存为字符串的时间戳和当前 UTC 时间戳之间的时间差(以秒为单位)
- java - Java Eclipse 编辑器上不支持的类版本错误
- python - 在 pandas 的大型数据集中创建一个迭代列的变量
- angular - 升级到 Angular 8 后 Web 浏览器超时
- css - 如何在引导程序中切换全局字体系列并更新 $font-family-base
- javascript - 接收字符串并使用 date-fns 验证它是否是有效日期
- python - 从 2 个现有字典(1 个嵌套字典,1 个列表字典)python 创建一个新字典
- c++ - AActor在ue4中设置移动性
- java - Java 警告:[options] 系统模块路径未与 -source 11 一起设置
- angular - 在角度模板中创建变量并在模板本身中从 API 分配数据