首页 > 解决方案 > 如何识别 R 中向量内随机子串的长度?

问题描述

我有一个 1 和 0 的长向量,我想找到一些函数,它会给我一个向量,该向量具有该向量中每个连续 1 列表的长度。例如,我拥有的向量如下所示:

c(0,0,0,1,1,1,1,1,1,0,0,1,0,0,1,1,1,0,0,1,1,1,1,0,0)

我想得到一个看起来像这样的输出(其中输出中的每个值都是输入向量中下一个连续长度 1 的长度):

c(6,1,3,4)

然后我可以在该输出向量上运行我需要的任何统计信息。重复/中间零的长度是随机的,我拥有的实际数据集是一个大约 20000 个元素长的向量,所以我无法手动完成。

有什么想法吗?我被卡住了。

谢谢!

标签: rvector

解决方案


我们可以使用rlebase R提取lengths基于“值”的逻辑向量

with(rle(as.logical(v1)), lengths[values])
#[1] 6 1 3 4

数据

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

推荐阅读