我将从一个示例开始,然后描述我尝试使用的逻辑。
我有两个IRanges
跨越相同总范围的普通对象,但可能在不同数量的范围内这样做。每个IRanges
人都有一个mcol
,但那mcol
是不同的IRanges
。
a
#IRanges object with 1 range and 1 metadata column:
# start end width | on_betalac
# <integer> <integer> <integer> | <logical>
# [1] 1 167 167 | FALSE
b
#IRanges object with 3 ranges and 1 metadata column:
# start end width | on_other
# <integer> <integer> <integer> | <logical>
# [1] 1 107 107 | FALSE
# [2] 108 112 5 | TRUE
# [3] 113 167 55 | FALSE
您可以看到这两个IRanges
范围都从 1 到 167,但a
只有一个范围和b
三个范围。我想将它们结合起来得到这样的输出:
my_great_function(a, b)
#IRanges object with 3 ranges and 2 metadata columns:
# start end width | on_betalac on_other
# <integer> <integer> <integer> | <logical> <logical>
# [1] 1 107 107 | FALSE FALSE
# [2] 108 112 5 | FALSE TRUE
# [3] 113 167 55 | FALSE FALSE
输出disjoin
与输入类似,但它保留mcols
,甚至扩展它们,以使输出范围与mcol
导致它的输入范围具有相同的值。