82 votes

Recherche de maxima et minima locaux

Je cherche un moyen efficace de trouver les maxima/minima locaux pour une grande liste de nombres dans R. J'espère qu'il n'y aura pas de for boucles...

Par exemple, si j'ai un fichier de données comme 1 2 3 2 1 1 2 1 Je veux que la fonction renvoie 3 et 7, qui sont les positions des maxima locaux.

0voto

canderson156 Points 23

J'ai aimé la solution de @mikeck pour ne pas avoir à convertir mes dataframes dans les deux sens à partir d'un objet zoo, mais je voulais aussi utiliser une fenêtre plus large que 1. Mais je voulais aussi utiliser une fenêtre plus large que 1. Leur solution ne prend en compte que la xème valeur éloignée de la valeur d'intérêt, et non les valeurs situées à x distance. Voici ce que j'ai trouvé. Il vous faudrait ajouter une ligne de retard/plomb supplémentaire pour chaque valeur éloignée de la valeur d'intérêt que vous souhaitez examiner.

x <- data.frame(AIC = c(98, 97, 96, 97, 98, 99, 98, 98, 97, 96, 95, 94, 93, 92, 93, 94, 95, 96, 95, 94, 93, 92, 91, 90, 89, 88))

x <- x %>%
  mutate(local.minima = if_else(lag(AIC) > AIC & lead(AIC) > AIC & 
                                  lag(AIC, 2) > AIC & lead(AIC, 2) > AIC &
                                  lag(AIC, 3) > AIC & lead(AIC, 3) > AIC, TRUE, FALSE),
         local.minima = if_else(is.na(local.minima), TRUE, local.minima))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X