Фильтрация данных в R - PullRequest
       9

Фильтрация данных в R

0 голосов
/ 06 сентября 2010

У меня есть следующий фрейм данных (df)

 start     end
1    14379   32094
2   151884  174367
3   438422  449382
4   618123  621256
5   698271  714321
6   973394  975857
7   980508  982372
8   994539  994661
9  1055151 1058824
.   .       .
.   .       .
.   .       .

И длинный логический вектор со значениями логическое (vec).

Я бы хотел отфильтровать все диапазоны в df, которые содержат хотя бы одно значение TRUE в соответствующих местах в vec.

Другими словами, строка с start=x end=y будет выведена, если !any(vec[x:y]).

Есть идеи, как этого добиться?

Ответы [ 2 ]

5 голосов
/ 06 сентября 2010

Это тот же вопрос, что и: Добавление столбца к кадру данных в R поэтому он имеет тот же ответ ... использовать применить, но с any вместо mean ...

> ranges <- apply(DF,1,function(row) !any(vec[ row[1]:row[2] ]))
> DF[ranges,]
2 голосов
/ 06 сентября 2010

Я читал ваши другие посты на эту тему, если вы хотите достичь этого с plyr, попробуйте это:

new.df <- adply(df, .margins=1, function(x){if(!any(vec[x$start:x$end])) return(x)})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...