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