【发布时间】:2016-02-08 12:21:10
【问题描述】:
我有多个具有相似重复上升模式的数字向量。例如:
vec_1 <- c(43, 17, 186, 193, 186, 186, 474, 491, 498, 498, 673, 736, 743, 716,
44, 19, 193, 194, 193, 193, 472, 498, 476, 499, 673, 743, 714, 714,
19, 21, 194, 180, 194, 194, 485, 499, 481, 476, 712, 719, 712,
17, 40, 174, 180, 169, 495, 485, 673, 177, 485, 481, 714, 730, 733,
40, 33, 190, 174, 180, 482, 495, 495, 479, 703, 733, 704)
总是有 5 次重复。在上面的例子中:
- 以 43 开头,以 716 结尾
- 以 44 开头(其中 1. 结束),以 714 结尾
- 等
我想生成一个标识重复次数的新向量。对于 vec_1,这将是:
rep_nums_1 <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, ..., 5)
每次重复中的项目数可能不同(所以我不能只将前 14 个元素分配为 1,接下来的 14 个元素分配为 2,等等)
不确定如何最好地解决这个问题。一个非优雅的解决方案是检查序列中的下一个元素是否小于当前元素,例如300,如果是,请更改组号。有更好的建议吗?谢谢。
【问题讨论】:
-
我可能很密集,但您似乎在第 3 步中忽略了很多重要信息。
-
3 指的是重复数 3(所有五个都以小数开头,以大数结尾)。
标签: r vector pattern-matching repeat