R 在矢量图中寻找峰值

R 在矢量图中寻找峰值,r,R,我试图找到向量中的“峰值”,即两边最近的相邻元素的值不相同的元素具有较低的值 例如,在向量中 c(0,1,1,2,3,3,3,2,3,4,5,6,5,7) 在位置5、6、7、12和14处有峰值 很接近,但不太合适。这应该可以。调用diff(sign(diff(x))==-2基本上是通过在rle所选的每个唯一值处/周围测试负二阶导数来查找峰值 x <- c(0,1,1,2,3,3,3,2,3,4,5,6,5,7) r <- rle(x) which(rep(x = diff(sig

我试图找到向量中的“峰值”,即两边最近的相邻元素的值不相同的元素具有较低的值

例如,在向量中

c(0,1,1,2,3,3,3,2,3,4,5,6,5,7)
在位置5、6、7、12和14处有峰值


很接近,但不太合适。

这应该可以。调用
diff(sign(diff(x))==-2
基本上是通过在
rle
所选的每个唯一值处/周围测试负二阶导数来查找峰值

x <- c(0,1,1,2,3,3,3,2,3,4,5,6,5,7)

r <- rle(x)
which(rep(x = diff(sign(diff(c(-Inf, r$values, -Inf)))) == -2, 
          times = r$lengths))
# [1]  5  6  7 12 14

x您给出的链接中的答案有什么问题?即哪个(diff(sign)(diff(tt))=-2)+1它只返回
12
,因为这是两个近邻都有较低值的唯一元素。问得好,也感谢你迄今为止通过这个出色的链接展示了你的想法/研究……直到现在,我才点击链接的问题,看到Ben Bolker和Tommy基本上使用了相同的方法d我在这里所做的解释!我想这是一个迹象,表明这是你能做的最好的。就像我说的:它接近我想要的,但我不太明白如何改变它来实现我想要的。感谢你甚至花时间解释你的解决方案是如何工作的!