2009-10-02 25 views
6

Birden çok vektörde ortak olmayan öğeleri bulmaya çalışıyorum. Yani, tüm vektörler arasında paylaşılmayan unsurları (sadece konumlarını değil) tam olarak bilmek istiyorum.Birden çok vektörün genelinde nadir öğeleri bulma

Yapabileceğim en iyi uygulama, iç içe döngü kullanmaktadır, ki bunun farkına vardığımda en az verimli olanıdır, en önemlisi yürütme şu anda yazarken hala çalışıyor olmasıdır. İşte neyle geldiğini. (Her * .id, Yüksek Mahkeme vaka kimliğinin dizeler olarak saklanan bir vektörüdür).

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) 

Bunu yapmanın daha verimli bir yolu olmalı?

cevap

3

Tüm Yargıtay yargılamalarının yer almadığı davaları bulmaya çalışmak? Ekleyebileceğiniz küçük bir örnek veri kümeniz olduğunu düşünmüyor musunuz?

Bir düşünce: vector.frame ("adalet", "case") gibi bir veri kümesine sahip olmak için birbirlerini üst üste vektörleri rbind. Ardından, dava başına adalet sayısını toplamak için hadleye ait reshape paketini kullanın (cast işlevini kullanın). Toplam adalet sayısından daha az olan herhangi bir dava "kötü durum" olacaktır.

+6

... ya da hepsini tek bir vektörde birleştirin ("liste dışı" deyin) ve "tablo" ile bir sayı yapın. –

İlgili konular