R查找具有间隙 /距离条件的最小值索引


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

我想找到3个最低值的索引,但条件是,所发现的最小值的索引彼此至少相距至少3个点。要查找我正在使用的最低索引

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

不寻找任何条件,并导致

1,2,3

我所需的结果是

1,9,4

我想知道是否有可能无需任何循环,因为我的列表要大得多。

非常感谢您。

要澄清我的意思:最小值的索引必须始终处于一定距离。例如,对于列表list<-c(1,3,9,5,9,9,2),最小值的结果应为1,7,4。不是1,7,2,因为指数1和2太近了。 再次感谢您帮助我。

使用dplyr:在第二列中创建一个具有序列的数据框,然后排序并找到第一次发生

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

最新更新