/ / r znajdź indeks minimów z warunkiem odstępu / odległości - r, warunek, minima

r znaleźć indeks minima z warunkiem gap / distance - r, condition, minima

list <- c(1,1,1,4,5,6,9,9,2)

Chcę znaleźć indeks 3 najniższych wartości, ale pod warunkiem, że indeks znalezionych minimów będzie co najmniej 3 punkty od siebie. Aby znaleźć 3 najniższe wskaźniki, których używam

which(list <= sort(list, decreasing=FALSE)[3], arr.ind=TRUE)

który nie szuka żadnych warunków i skutkuje

1,2,3

Mój pożądany wynik to

1,9,4

Chcę wiedzieć, czy można to zrobić bez żadnych pętli, ponieważ moja lista jest znacznie większa.

Z góry bardzo dziękuję.

Aby wyjaśnić, co miałem na myśli: wskaźniki minimów muszą zawsze znajdować się w pewnej odległości. Na przykład dla listy list<-c(1,3,9,5,9,9,2) wynik minimów powinien być 1,7,4. Nie 1,7,2, ponieważ wskaźniki 1 i 2 są zbyt blisko siebie. Jeszcze raz dziękuję za pomoc.

Odpowiedzi:

1 dla odpowiedzi № 1

Wypróbuj to za pomocą dplyr: utwórz ramkę danych z sekwencją w drugiej kolumnie, a następnie posortuj i znajdź pierwsze wystąpienie

library(dplyr)

kk <- data.frame(cbind(list, seq=seq_along(list))) %>%
arrange(list) %>%  # sort list
group_by(list) %>% # group
summarise(V3=min(seq)) %>% # find first occurance
.$V3 %>% # get sequence values
head(3) # get top 3

[1] 1 9 4