2016-03-30 11 views
0

私はここで新しいですが、実際にRのプロではありません。皆さんが私を助けてくれることを願っています。ベクトル内の同じ連続した値を特定するR

私はベクトルlsを持っており、そこに少なくとも3つの同じ連続する値を特定したいと思います。

例:

ls <- c(1, -1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1) 

今私は、連続的に3の最小LS、内の位置を特定したい-1のは開始を行います。ここでの出力(位置)は次のようになります。

[1] 4 10 

アイデアはありますか?ありがとう。

答えて

1

あなたはランレングスのcummulative合計が、実行のエンドポイントを与えるrle

r <- rle(ls) 
(cumsum(r$lengths)-r$lengths+1)[r$value==-1 & r$length>=3] 
#> [1] 4 10 

を使用することができます。長さを引くことは、開始する直前の位置に与えるので、1つ戻します。値が-1でランレングスが3以上の場所の結果をサブセット化します。

+0

ありがとうございました!それは完璧に働いた。 – martin1009

関連する問題