2009-10-02 13 views
6

Próbuję znaleźć elementy, które nie są częste w wielu wektorach. To znaczy, chcę dokładnie poznać elementy (nie tylko ich położenie itp.), Które nie są wspólne dla wszystkich wektorów.Znajdowanie nietypowych elementów w wielu wektorach

Najlepszą implementacją, jaką mogłem wymyślić, jest pętla zagnieżdżona, która, jak rozumiem, jest najmniej wydajna, przede wszystkim dlatego, że wykonanie jest nadal uruchomione, gdy to piszę. Oto, co wymyśliłem. (każdy * .id jest wektorem identyfikatora przypadku Sądu Najwyższego zapisanego jako ciągi znaków).

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) 

Czy musi to być skuteczniejszy sposób?

Odpowiedz

3

Próbujesz znaleźć przypadki, w których nie byli zaangażowani wszyscy sędziowie Sądu Najwyższego? Nie sądzisz, że masz mały przykładowy zestaw danych, który możesz dodać?

Myśl: rbind wektory jeden na drugim tak, aby mieć zestaw danych jak data.frame ("sprawiedliwość", "case"). Następnie użyj pakietu hadleya reshape (użyj funkcji cast), aby zsumować liczbę sędzi w jednym przypadku. Każdy przypadek z mniejszą niż łączna liczbą sędziów będzie "złym przypadkiem".

+6

... lub po prostu połącz je wszystkie w jeden wektor (powiedz z 'unlist') i zrób zliczenie za pomocą' table'. –

Powiązane problemy