是否有R函数来查找局部最小值和最大值?

问题描述 投票:-2回答:1

R中是否有一个函数可以接受矢量作为输入并输出具有局部最小值和最大值的矢量,以及它们在原始矢量中的位置?

r function vector max min
1个回答
0
投票
v为纯矢量,并将峰定义为一个元素,该峰严格大于任一侧的元素,并且对于波谷也类似。然后,下面给出两个逻辑向量,每个逻辑向量的长度与v相同。一个指示对其他位置使用TRUE和FALSE的峰的位置,另一个指示对相同位置的波谷。如果首选使用which(peaks)which(troughs)来获取索引号。

library(zoo) peaks <- rollapply(v, 3, function(x) x[2] > max(x[-2]), fill = FALSE) troughs <- rollapply(v, 3, function(x) x[2] < min(x[-2]), fill = FALSE)

我们可以这样组合它们,其中每个输出分量如果是峰值,则为1;如果是波谷,则为-1;否则为0。]

extreme <- function(x) (x[2] > max(x[-2])) - (x[2] < min(x[-2])) rollapply(v, 3, extreme, fill = FALSE)

© www.soinside.com 2019 - 2024. All rights reserved.