如何找到序列矩阵中两点之间的距离?

How do I find the distance between two points in a matrix of sequences?

我有一个由 0 和 1 组成的大矩阵。 我想找到 1s 之间的距离。

例如,如果我将矩阵的第一行设为

 0  0  1  0  1  1  0

我想要输出

3  2  1  

3是第1个的位置 2是第一个和第二个1之间的距离 1是第二个和第三个1

的位置

我该如何完成?

一个选项是 whichdiff。将 vector 转换为逻辑,用 which 找到值为 1 的索引,并得到索引位置的 difference

i1 <- which(as.logical(v1))
out <- c(i1[1], diff(i1))
out
#[1] 3 2 1

数据

v1 <- c(0, 0, 1, 0, 1, 1, 0)