Нахождение локальных максимумов и минимумов в R с дискретными значениями - PullRequest
0 голосов
/ 28 октября 2019

Я ищу воспроизводимый способ найти самый последний локальный пик в данной серии (и отдельно самый последний впадина). По большей части ответы здесь - Нахождение локальных максимумов и минимумов работают, за исключением случаев, как показано ниже, я использовал ответ Томми по этой ссылке, так как он кажется наиболее надежным.

x <- c(0.4,0.5,0.5,0.4,0.4,0.3,0.3)

  localMaxima <- function(x) {
    # Use -Inf instead if x is numeric (non-integer)
    y <- diff(c(-Inf, x)) > 0L
    rle(y)$lengths
    y <- cumsum(rle(y)$lengths)
    y <- y[seq.int(1L, length(y), 2L)]
    if (x[[1]] == x[[2]]) {
      y <- y[-1]
    }
    y
  }

>localMaxima(x)
[1] 2

В этом случае следует возвращать [1] 3, а не 2, поскольку это самая последняя точка (последняя точка данных является концом вектора). Обращение вектора с помощью rev (x) не будет работать, поскольку нет надежного способа определить, должен ли вектор быть обращенным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...