R:向量

时间:2017-08-31 13:18:36

标签: r sum

我有许多由1和0组成的向量,例如:

[1] x <- c(0, 1, 1, 0, 0, 1)

我想计算这些序列不同部分的连续1的数量,在这种情况下最终得到:

[1] 2 1

我已经考虑使用类似strsplit的东西来分割存在零的序列,尽管它是一个数字向量,因此strsplit将无法工作,理想情况下我不想在数字和字符格式之间来回切换。 / p>

还有另一个更简单的解决方案吗?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

您可以将值拆分为矢量并使用rle,如下所示:

使用原始值

x <- 11001

temp <- rle(unlist(strsplit(as.character(x), split="")))

temp$lengths[temp$values == 1]
[1] 2 1

开始使用向量时更简单,因为您不必使用strsplitunlist

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

temp <- rle(x)

temp$lengths[temp$values == 1]
[1] 2 1
相关问题