gpt4 book ai didi

r - 如何将间隔数据组合成 R 中更少的间隔?

转载 作者:行者123 更新时间:2023-12-01 23:42:06 26 4
gpt4 key购买 nike

我试图将一系列间隔折叠成更少的、同样有意义的间隔。

例如考虑这个间隔列表

Intervals = list(
c(23,34),
c(45,48),
c(31,35),
c(7,16),
c(5,9),
c(56,57),
c(55,58)
)

因为间隔重叠,所以相同的间隔可以用很少的向量来描述。绘制这些间隔很明显,4 个向量的列表就足够了

plot(1,1,type="n",xlim=range(unlist(Intervals)),ylim=c(0.9,1.1))
segments(
x0=sapply(Intervals,"[",1),
x1=sapply(Intervals,"[",2),
y0=rep(1,length(Intervals)),
y1=rep(1,length(Intervals)),
lwd=10
)

enter image description here

如何减少我的 Intervals 列表以携带与图上显示的信息相同的信息? (性能问题)

上面例子的期望输出是

Intervals = list(
c(5,16)
c(23,35),
c(45,48),
c(55,58)
)

最佳答案

您需要的是IRanges 包中的reduce 函数。

In.df <- do.call(rbind, Intervals)
library(IRanges)

In.ir <- IRanges(In.df[, 1], In.df[,2])

out.ir <- reduce(In.ir)
out.ir
# IRanges of length 4
# start end width
# [1] 5 16 12
# [2] 23 35 13
# [3] 45 48 4
# [4] 55 58 4

关于r - 如何将间隔数据组合成 R 中更少的间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com