如何在R中计算矩阵中数字的变化?

5

我有一个名为'cmat'的矩阵:

> cmat
      [,1]
 [1,]    0
 [2,]    0
 [3,]    0
 [4,]    1
 [5,]    0
 [6,]    1
 [7,]    0
 [8,]    1
 [9,]    0
[10,]    1
[11,]    1
[12,]    1
[13,]    0
[14,]    0
[15,]    1
[16,]    0
[17,]    1
[18,]    0
[19,]    0
[20,]    1
[21,]    0
[22,]    1
[23,]    0

现在,我想要实现的是从上一个值为0到当前值为1时的次数计数。如何在R中实现?

3个回答

7
如果只有二进制值,sum(diff(cmat)==1) 可能是一种实现方法。

3

您可以这样做

sum( cmat[, 1] == 1 & c(NA, head(cmat[, 1], -1)) == 0 , na.rm = TRUE)

非常感谢,它对于矩阵起作用了。您能告诉我如何在数值向量而不是矩阵上实现相同的效果吗? - LearneR
1
@KrishnaKanth 只需将 cmat[, 1] 更改为您的向量名称即可。 - David Arenburg

1

在此添加一个替代方案。 rle(cmat) 可以让您识别每个值更改的位置以及新值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接