【发布时间】:2022-01-06 23:10:46
【问题描述】:
我想知道是否有一种 R 方式(一条线)来提取高于给定阈值的向量的所有子集的坐标。 假设我有以下数据:
v = c(3.48, 2.59, 1.73, 0.91, 0.13, -0.63, -1.34, -2.03, -2.67, -3.28, -3.04, -2.15, -1.20, -0.19, 0.84, 1.86, 2.84, 3.77, 4.60, 5.31, 4.16, 2.87, 1.89, 0.51, 0.23, 0.78, 1.34, 2.63, 1.72, 0.62, 0.98, 1.45)
假设我有threshold = 0.7。期望的输出是:
left right
1 4
15 23
26 29
31 32
原则上我可以编写一个while 循环或某种形式,将v 子集化并处理这些区域的left 和right 坐标,例如:
left = which(subset >= threshold)[1] + right
right = which(subset[left:length(subset)] < threshold)[1] - 1 # -1 to get the last element above the threshold
subset = v[(right + 1):length(v)]
(未测试),但我确信有一种我似乎不记得的 R 方式。
我看过here,但这并不是我真正想要的。任何帮助表示赞赏。
【问题讨论】:
-
你是只对元素
-
连续间隔。像 [1,4]、[15,23] 等。