Найдите первое минимальное значение в R?

#r

#r

Вопрос:

Как я могу найти первое минимальное значение в векторе? Например, в y я хотел бы вернуться 3 , потому что это первый раз, когда значения с обеих сторон y[3] больше, чем y[3] . Я написал функцию для этого, но задаюсь вопросом, есть ли более простой способ? Мне также нужно учитывать случай, когда первое значение меньше второго значения. Например, в . z

 y lt;- c(2448,2442,2438,2440,2438,2444,2431,2433,2434) plot(y)  getFirstMin lt;- function(x){  if(x[1] lt; x[2]) res lt;- 1  else res lt;- min(which(diff(x) gt; 0))  return(res) } getFirstMin(y)  z lt;- c(2408,2442,2438,2440,2438,2444,2431,2433,2434) plot(z) getFirstMin(z)  

Комментарии:

1. which.min(abs(diff(cummin(y)))) решает ли это проблему?

2. так каковы же должны быть результаты z ?

3. о чем 1,2,3,4,5,6,7 это ??

Ответ №1:

Мы можем использовать first , which , lag() и lead()

 getFirstMinlt;-function(x) {dplyr::first(which(lag(x, default = Inf) gt; x amp; lead(x, default = Inf) gt; x ) }