[R] Removing rows of zeros from a matrix

David Winsemius dwinsemius at comcast.net
Thu Jun 23 13:33:09 CEST 2011


On Jun 2, 2011, at 11:35 AM, Petr Savicky wrote:

> On Thu, Jun 02, 2011 at 11:23:28AM -0400, Jim Silverton wrote:
>> Hi,
>> Can someone tell me how to remove rows of zeros from a matrix?
>> For example if I have the following matrix,
>>
>> 0 0
>> 0 1
>> 2 8
>> 0 0
>> 4 56
>>
>> I should end up with
>> 0 1
>> 2 8
>> 4 56
>
> Hi.
>
> Try the following
>
>  a <- matrix(c(0, 0, 2, 0, 4, 0, 1, 8, 0, 56), ncol=2)
>  a[rowSums(a != 0) != 0, ]

To avoid removing rows where non-zero elements do sum to 0 one could  
use the only slightly longer test that first converts "a" to logical:

  a <- matrix(c(1, 0, 2, 0, 4, -1, 1, 8, 0, 56), ncol=2)

  a[ rowSums(a==0) != ncol(a), ]
      [,1] [,2]
[1,]    1   -1
[2,]    0    1
[3,]    2    8
[4,]    4   56

-- 
David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list