Binary Grouping in R
Suppose I have two vectors of same dimensions:
x <-c(0.49534,0.80796,0.93970,0.99998)
co开发者_如何学编程unt <-c(0,33,0,4)
How can I group the vectors 'x' into two vectors:
- Vector
grzerothat contain value in x withcountvalue greater than 0 and - Vector
eqzerowith value in x withcountvalue equal to zero.
Yielding
> print(grzero)
> [1] 0.80796 0.99998
> print(eqzero)
> [1] 0.49534 0.93970
grzero <- x[count > 0]
eqzero <- x[count == 0]
Why this works is because expressions like count > 0 evaluate to a vector of Booleans, so count > 0 is FALSE TRUE FALSE TRUE and count == 0 is TRUE FALSE TRUE FALSE. Then you index vector x with Boolean vector and get only those elements for which corresponding value of Boolean vector is TRUE.
split may be useful,
split(x,c("eqzero","grzero")[(count>0)+1])
this is a bad hack though...
加载中,请稍侯......
精彩评论