计算R中矩阵行中相同值的组数

Count the number of groups of the same value in a matrix row in R

在下面的示例中,我显示了 R 中模拟的矩阵的第一行。该行代表我模拟中的一个人,列代表天数。如果某人在给定的一天发烧,则在此矩阵中将其编码为“1”。我想输出一个人发烧的次数。在下面的示例中,这将是 4 次(4 组 1)。有谁知道如何对此进行编码以将相邻的 1 计为一次出现?

out_fever[1,]

 [1] 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0

我们用apply遍历行并使用rle计算每行中1的块数

out_fever$n_fever <- apply(out_fever, 1,  function(x)  with(rle(x), sum(values==1)))

第一行使用可重现的例子

v1 <- c(0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,  
      1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0)
with(rle(v1),  sum(values == 1))
#[1] 4