R中逻辑向量中连续值的相交范围
我有两个逻辑向量,如下所示:R中逻辑向量中连续值的相交范围,r,range,interval-intersection,R,Range,Interval Intersection,我有两个逻辑向量,如下所示: 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) 我想计算连续值范围之间的交点。这意味着连续值(1s)作为一个范围处理。所以在上面的例子中,每个向量包含一个1s的范围,这些范围只相交一次 是否有任何适用于范围交叉口的R程序包可以在这里提供帮助?我认为这应该可以(调用逻辑向量x和y): 举几个例子: x = c(0, 0, 0, 1, 1
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)
我想计算连续值范围之间的交点。这意味着连续值(1s)作为一个范围处理。所以在上面的例子中,每个向量包含一个1s的范围,这些范围只相交一次
是否有任何适用于范围交叉口的R程序包可以在这里提供帮助?我认为这应该可以(调用逻辑向量x
和y
):
举几个例子:
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
计数。这是一个很好的答案,谢谢!知道我能不能只计算第一个向量的交点吗?例如x=c(0,1,1,1,1,1,1,1,1,1,0,0,0),y=c(0,0,0,1,1,1,0,0,0,0,1,1,0)会导致“1”相交,这几乎不那么容易。。。至少用这种方法是不行的。我建议问一个新问题。我还建议将其表述为“在第一个向量中,每运行1次最多计算一个交点”——这似乎更清楚。
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