Двоичная группировка в R - PullRequest
3 голосов
/ 06 июля 2010

Предположим, у меня есть два вектора одинаковых размеров:

x <-c(0.49534,0.80796,0.93970,0.99998)
count      <-c(0,33,0,4)

Как я могу сгруппировать векторы 'x' в два вектора:

  1. Вектор grzero, которые содержат значениев x с count значением больше 0 и
  2. Vector eqzero со значением в x с count значением, равным нулю.

Выход с

> print(grzero)
> [1] 0.80796 0.99998
> print(eqzero)
> [1] 0.49534 0.93970

Ответы [ 2 ]

17 голосов
/ 06 июля 2010
grzero <- x[count > 0]
eqzero <- x[count == 0]

Почему это работает, потому что выражения типа count > 0 вычисляются для вектора логических значений, поэтому count > 0 равно FALSE TRUE FALSE TRUE, а count == 0 равно TRUE FALSE TRUE FALSE. Затем вы индексируете вектор x с помощью логического вектора и получаете только те элементы, для которых соответствующее значение логического вектора равно TRUE.

2 голосов
/ 06 июля 2010

разделение может быть полезным,

split(x,c("eqzero","grzero")[(count>0)+1])

это плохой хак ...

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