r - 如何识别 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 个元素长的向量,所以我无法手动完成。
有什么想法吗?我被卡住了。
谢谢!
解决方案
我们可以使用rle
和base 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)
推荐阅读
- javascript - 我无法处理承诺拒绝
- mysql - 如何从两个表中获得最高工资
- javascript - 角嵌套 FormArray
- c++ - 如何在 Visual Studio 中修复“C2061 语法错误标识符“堆栈”?
- camera - 在android中使用Camera2进行实时处理应该采用什么图像格式?
- php - MongoDB和PHP连接
- python - 如何最好地使用 python 创建一个简单的、交互式的、可共享的图?
- django - 从视图集调用时未触发模型的方法 .clean()
- android - 我的启动收到的广播接收器没有在启动时启动
- reporting-services - 我在 ssrs 中创建了一份带有日期参数的报告