2016-11-30 53 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