2013-07-04 10 views
5

私は少なくとも50,000の実数を含むRを持つベクトルを持っています。 値は小さい順に並べられています。このベクトルを別のベクトルに分割する必要があります。 2つの数の差が所定の数(例えば2つ)より大きい場合、ベクトルを分割する必要があります。R、不明なインデックスでの分割ベクトル

例、

data <- c(1,1.1, 1.2, 4, 4.2, 8, 8.9, 9, 9.3); 
# Then I need the following vectors: 
x1 <- c(1, 1.1, 1.2); 
x2 <- c(4, 4.2); 
x3 <- c(8, 8.9, 9, 9.3); 

難しさは、私たちが必要なベクトルの数を知らないとフォアハンドで各ベクトルの長さを知らないということです。

私は以下の考えを持っていますが、これは非常に時間がかかり、ベクトルを2つの新しいベクトルに分割することしかできません。

私はあなたの助けを楽しみにしています!

+0

、これを試してみてください? –

答えて

7

は、あなたが複数の可能な分割ポイントを(すなわち、連続する数の差が2以上である複数のポイントがある)を見つけたときに起こることになって何

split(data, cumsum(c(0, diff(data)>=2))) 
+0

これはまさに私が探しているものです。 それは簡単ではないとは思わなかった。 さらに、私は同じindecesで別のベクトルを分割する必要がありました。単純解: y1 < - split(x、cumsum(c、0、diff(x)> = 2)));y2 < - split(z、cumsum(c(0、diff(x)> = 2))); – Michiel

関連する問題