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

3つの最低値のインデックスを見つけたいのですが、見つかった最小値のインデックスが互いに少なくとも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 が近すぎるためです。助けてくれてありがとう。

4

1 に答える 1

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
于 2016-11-30T13:22:10.887 に答える