2009-10-02 11 views
6

私は複数のベクター間で共通でない要素を見つけるためにしようとしています。つまり、すべてのベクトルで共有されていない要素(位置などではなく)を正確に知りたいのです。複数のベクター間では珍しい要素を見つける

私が思い付くことができる最高の実装では、私は私がこれを書いて、実行がまだ実行されている最も顕著なので、おそらく最も効率的であると認識ネストされたループを使用しています。ここに私が思いついたのがあります。 (各* .idは、Supreme CourtケースIDの文字列として格納されたベクトルです)。

check.cases<-TRUE 

if(check.cases) { 
    all.cases<-c(AMKennedy.id,AScalia.id,CThomas.id,DHSouter.id,JGRoberts.id,JPStevens.id,RBGinsburg.id,SAAlito.id,SGBreyer.id) 
    bad.cases<-c() 
    for(b in all.cases) { 
     for(t in all.cases) { 
      m<-match(t,b) 
      bad<-t[which(is.na(m))] 
      bad.cases<-append(bad.cases,bad) 
     } 
    } 
    bad.cases<-unique(bad.cases) 
} 

print(bad.cases) 

もっと効率的な方法が必要ですか?

答えて

3

すべての最高裁判事が関与していない例を見つけようか!あなたが追加できる小さなサンプルデータセットがあるとは思わないでください。

思考:あなたはdata.frame(「正義」、「ケース」)のようなデータセットを持っているように、互いの上にベクトルをrbind。次に、hadleyのreshapeパッケージ(cast関数を使用)を使用してケースごとのジャスティスの数を合計します。ジャスティスの総数よりも少ないケースは「悪いケース」になります。

+6

...またはちょうど1つのベクトル(unlist' 'と言う)にそれらのすべてを組み合わせて、table''で、カウントを行います。 –

関連する問題