【发布时间】:2019-07-12 13:55:20
【问题描述】:
我想在 data.table 对象中找到多个范围的重叠部分。
一个例子是:
t <- data.table(a = c(3,4,5), b = c(13,12,19))
所以我们有范围:
3 - 13, 4 - 12, 5 - 19
因此重叠范围为:
5 - 12
如果有额外的范围 19 - 22,则重叠应返回 NA - NA 或 0 - 0,因为没有重叠。
我找到了类似问题的解决方案,例如 spatstat.utils:: intersect.ranges()。然而,这只适用于两个向量,很难在 data.table 中实现
DT[,.(o.l = function()[1], o.r = function()[2], by=.()]
如果可能的话,我真的很想这样做,..
作为这个例子的输出,我想要:
t <- data.table(a = c(3,4,5), b = c(13,12,19), o.l = c(5,5,5), o.r = c(12,12,12))
【问题讨论】:
-
检查
foverlaps -
我已经使用 foverlaps 连接两个 data.tables,但现在不知道如何在这种情况下应用它
-
data.table(a = c(3,4,5), b = c(13,12,19))[, .(max(a), min(b))] -
谢谢,这当然适用于该示例。我也稍微调整了这个问题以解释这种情况
标签: r dataframe data.table overlap