用于计算 R 中重复序列的循环

loop for counting repeated sequence in R

我有一个矩阵,其中我在多列中重复了数字,然后数字发生变化并在另一列(可能不同)中重复,这发生在不同的行中。 例如:

X = data.frame(replicate(10,sample(0:2,10,rep=TRUE)))
X[1:3,]
  X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1  0  2  1  0  0  0  1  1  1   1
2  1  0  1  2  0  0  1  2  2   0
3  0  2  0  1  1  0  1  1  0   1

我想要做的是创建一个列表,其中包含第一个数字的重复次数、第二个数字的重复次数,等等。从上面的例子来看,它将是:

1 1 1 3 4
1 1 1 1 2 1 2 1
1 1 1 2 1 2 1 1

有什么想法吗?? 谢谢!!

rle 在这里会有帮助:

apply(X, 1, function(x) unname(rle(x)$lengths))

#$`1`
#[1] 1 1 1 3 4

#$`2`
#[1] 1 1 1 1 2 1 2 1

#$`3`
#[1] 1 1 1 2 1 2 1 1

数据

X <- structure(list(X1 = c(0L, 1L, 0L), X2 = c(2L, 0L, 2L), X3 = c(1L, 
1L, 0L), X4 = c(0L, 2L, 1L), X5 = c(0L, 0L, 1L), X6 = c(0L, 0L, 
0L), X7 = c(1L, 1L, 1L), X8 = c(1L, 2L, 1L), X9 = c(1L, 2L, 0L
), X10 = c(1L, 0L, 1L)), class = "data.frame", row.names = c("1", "2", "3"))