Поиск необычных элементов в нескольких векторах - PullRequest
6 голосов
/ 02 октября 2009

Я пытаюсь найти элементы, которые не являются общими для нескольких векторов. То есть я хочу точно знать элементы (не только их положение и т. Д.), Которые не являются общими для всех векторов.

Лучшая реализация, которую я мог придумать, использует вложенный цикл, который, как я понимаю, вероятно, наименее эффективен, особенно потому, что выполнение все еще выполняется, когда я пишу это. Вот что я придумал. (каждый * .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)

Должен быть более эффективный способ сделать это?

1 Ответ

3 голосов
/ 02 октября 2009

Пытаетесь найти случаи, когда все судьи Верховного суда не были вовлечены? Не думаете ли вы, что у вас есть небольшой набор данных, который вы можете добавить?

Мысль: свяжите векторы друг с другом, чтобы у вас был набор данных, такой как data.frame ("правосудие", "случай"). Затем используйте пакет reshape hadley (используйте функцию cast) для суммирования количества судей в каждом случае. Любое дело с общим количеством судей будет «плохим».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...