[R] Changing a logical matrix into a numeric matrix

(Ted Harding) ted.harding at wlandres.net
Mon Jan 10 10:39:18 CET 2011


On 10-Jan-11 09:17:26, emj83 wrote:
> Hi,
> 
> I would like to turn my TRUE/FALSE matrix into a 1/0 matrix (i.e.
> True=1 and
> False=0)
> 
>       [,1]  [,2]  [,3]  
> [1,]  TRUE FALSE FALSE 
> [2,]  TRUE  TRUE FALSE 
> [3,]  TRUE  TRUE  TRUE 
> 
>       [,1]  [,2]  [,3]  
> [1,]    1    0     0
> [2,]    1    1     0
> [3,]    1    1     1
> 
> Is there a quick way of doing this without a loop?
> Thanks Emma

As soon as logic encounters arithmetic, TRUTH and FALSITY
cease to exist -- they get hijacked!

Hence: multiply your matrix by 1. For example:

  A <- matrix(c(TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE),ncol=4)
  A
  #       [,1] [,2]  [,3]  [,4]
  # [1,]  TRUE TRUE  TRUE FALSE
  # [2,] FALSE TRUE FALSE  TRUE

  B <- 1*A
  B
  #      [,1] [,2] [,3] [,4]
  # [1,]    1    1    1    0
  # [2,]    0    1    0    1

(You could also add zero: B <- 0+A)

Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <ted.harding at wlandres.net>
Fax-to-email: +44 (0)870 094 0861
Date: 10-Jan-11                                       Time: 09:39:15
------------------------------ XFMail ------------------------------



More information about the R-help mailing list