r - 基于序列其余部分的具有给定属性的元素的索引
问题描述
嘿,我有以下 0 和 1 的向量:
x = c(0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0)
我想从 1 的序列中找到第一个元素的索引,该索引的长度超过了每个后续的 0 字符串的长度。所以在我的例子中,解决方案应该是“10”,因为 x 的最后三个元素是:1, 1, 0
所以序列 1 的长度,1 大于任何后续 0 字符串的长度。我怎么能在 R 中做到这一点?
解决方案
一种选择可能是:
which.max(with(rle(x), rep(values * (lengths > c(tail(lengths, - 1), 0)), lengths)))
不同 x 值的结果:
x <- c(0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0)
[1] 10
x <- c(0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0)
[1] 5
x <- c(1, 1, 0, 1, 1, 0)
[1] 1
然而,这假设至少有一个这样的序列。
对于没有满足条件的序列的情况:
ind <- with(rle(x), rep(values * (lengths > c(tail(lengths, - 1), NA)), lengths))
if(length(which(ind == 1)) == 0) NA else min(which(ind == 1))
推荐阅读
- python - 启用 selenium python 后查找并单击按钮
- postgresql - postgresql bgworker SIGTERM 处理程序调用了两次
- wso2 - WSO2 Enterprise Integrator 6.3.0:如何将多个文件合并为一个?
- kohana-3.3 - Kohana 3.3 带有子文件夹的路由在 Windows 上工作但在 Linux 上失败
- javascript - Emscripten:如何使用标头构建 C++ 项目
- cakephp - 在 Cakephp 3.x 中保存对关联实体的手动更改
- jquery - 根据条件使用Jquery检索子节点信息
- sql - 对 Eloquent 的困难查询
- apache-spark - 火花数据框:爆炸列表列
- excel - 在 Excel 中使用 VBA 从组用户获取/检索 Active Directory SamAccountName