r - 基于增加/减少趋势的子集向量
问题描述
我在 R 中有一个向量定义为c(2,3,4,6,5,3,1,3,5,6)
。
我想根据向量中的所有增加/减少趋势对向量进行子集化。
期望的输出应该是 3 个子向量(在这个例子中)
1) (2,3,4,6)
2) (6,5,3,1)
3) (1,3,5,6)
解决方案
x = c(2, 3, 4, 6, 5, 3, 1, 3, 5, 6)
r = cumsum(rle(sign(diff(x)) >= 0)$lengths) + 1
lapply(seq_along(r), function(i){
x[max(1, r[i - 1]):r[i]]
})
#[[1]]
#[1] 2 3 4 6
#[[2]]
#[1] 6 5 3 1
#[[3]]
#[1] 1 3 5 6
推荐阅读
- c# - 如何建模剃须刀页面模型的绑定复杂类型属性?
- kubernetes - k8s (k3s):自动公开一个服务
- c# - 如何通过在 MongoDB 中的字母数字字符串中排序来找到最大的数字
- javascript - 找到所有href值以“http ..”开头的链接,然后设置target =“_blank”,使用javascript而不是jquery
- java - 如何反转或补充Java中返回布尔值的函数的输出
- r - 通过将数据集中的所有变量保存在 r 中来计算平均值
- java - 清理缓存时片段重复
- laravel - 使用 PHPUnit 通过 Github 操作在主机应用程序中测试 Laravel 包?
- macos - 签署、公证、强化等 macOS 命令行二进制文件?
- c# - 以动画方式绘制线条