2010-07-06 67 views
3

假设我有两个尺寸相同的载体:二进制分组中的R

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

我怎样才能组的矢量的“x”为两个载体:

  1. 矢量grzero包含在x值与count值大于0和
  2. 矢量eqzero其中值为x,count值等于零。

屈服

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

只是一个快速的评论,我觉得像Linux和UNIX标签可以在这种情况下被丢弃。 – 2010-07-06 09:32:57

回答

17
grzero <- x[count > 0] 
eqzero <- x[count == 0] 

为什么这个作品是因为喜欢count > 0表达式求布尔值的矢量,所以count > 0FALSE TRUE FALSE TRUEcount == 0TRUE FALSE TRUE FALSE。然后,您使用布尔向量为矢量x编制索引,并仅获取布尔向量的相应值为TRUE的那些元素。

2

分裂可能是有用的,

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

这是一个糟糕的黑客,但...