用于计算 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"))
我有一个矩阵,其中我在多列中重复了数字,然后数字发生变化并在另一列(可能不同)中重复,这发生在不同的行中。 例如:
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"))