2012-12-17 9 views
6

離散レベルのforループを書くことは可能ですか?ユニークな値のループの場合

私は、次の形式のベクトルを持っている:

a<-c(1,1,1,1,1,3,3,5,11,18 ....1350) 

それが増加シリーズですが、任意の論理的な順序に従っていません。

私は、引数としてのレベル(A)を使用して、forループを実行したいと思います:

for i in 1:levels(a) 

私は次のエラーを取得する:

In 1:levels_id : 
numerical expression has 1350 elements: only the first used 

答えて

14

あなたの最初の間違いは、あなたがループを混乱されていることですあなたのベクトルの要素をループすることで、インデックス上で。

あなたのベクトルのユニークな要素をループにしたい場合は、使用します。

for(i in unique(a)) 

を、私はそれはあなたがやりたいことだと仮定します。しかし、代替がユニークベクトルのインデックスをループにある:

for(i in 1:length(unique(a))){ 
    this.a <- unique(a)[i] 
} 

これらの2つは同じですが、(あなたがそれを必要に応じて)第二は、同様に現在のインデックスを知ることができるようになります。

+0

これらは、length(a)> 0であれば同等です。 –