我有许多由1和0组成的向量,例如:
[1] x <- c(0, 1, 1, 0, 0, 1)
我想计算这些序列不同部分的连续1的数量,在这种情况下最终得到:
[1] 2 1
我已经考虑使用类似strsplit的东西来分割存在零的序列,尽管它是一个数字向量,因此strsplit将无法工作,理想情况下我不想在数字和字符格式之间来回切换。 / p>
还有另一个更简单的解决方案吗?非常感谢任何帮助。
答案 0 :(得分:4)
您可以将值拆分为矢量并使用rle
,如下所示:
使用原始值
x <- 11001
temp <- rle(unlist(strsplit(as.character(x), split="")))
temp$lengths[temp$values == 1]
[1] 2 1
开始使用向量时更简单,因为您不必使用strsplit
和unlist
。
x <- c(0, 1, 1, 0, 0, 1)
temp <- rle(x)
temp$lengths[temp$values == 1]
[1] 2 1