2016-11-30 91 views
0
list <- c(1,1,1,4,5,6,9,9,2) 

我想找到3个最低值的索引,但条件是找到的最小值的索引至少相距3个点。 要找到我使用r找到缺口/距离条件下的最小值索引

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

3个最低指数不找任何条件和结果在

1,2,3

我期望的结果是

1,9,4

我想知道是否有可能没有任何循环,因为我的列表更大。

非常感谢你提前。

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

+0

的条件还不是很清楚。你试图找到与'排序'矢量或原始的距离条件的索引 – akrun

+0

我试图找到与距离条件的索引。 – RHelpPlease

+0

我的意思是距离是在原始矢量还是按排序 – akrun

回答

1

试试这个使用dplyr: 在第2列创建序列的数据帧,然后进行排序,找到第一次出现

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 
+0

非常感谢你的努力。当最小值以不同的顺序出现时有一个问题。例如'c(1,3,9,5,9,9,2)'我期望** 1,7,4 **,但我得到** 1,7,2 ** – RHelpPlease