#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 ) }