我有两个逻辑向量,看起来像这样:
x = c(0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0)
y = c(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0)
我想计算连续值范围之间的交叉点。这意味着连续值(1的值)被处理为一个范围。因此,在上面的示例中,每个向量包含一个1的范围,并且这些范围仅相交一次。
是否有任何R软件包可用于范围交集,可以帮助解决这个问题?
我有两个逻辑向量,看起来像这样:
x = c(0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0)
y = c(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0)
我想计算连续值范围之间的交叉点。这意味着连续值(1的值)被处理为一个范围。因此,在上面的示例中,每个向量包含一个1的范围,并且这些范围仅相交一次。
是否有任何R软件包可用于范围交集,可以帮助解决这个问题?
x
和 y
):sum(rle(x & y)$values)
一些例子:
x = c(0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0)
y = c(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0)
sum(rle(x & y)$values)
# [1] 1
x = c(1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0)
y = c(0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0)
sum(rle(x & y)$values)
# [1] 2
x = c(1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0)
y = c(0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0)
sum(rle(x & y)$values)
# [1] 3
简单来说,x & y
对每个元素取交集,rle
将相邻的交集合并,sum
统计数量。