Skip to content

Changing a logical matrix into a numeric matrix

7 messages · emj83, Søren Højsgaard, Joshua Wiley +3 more

#
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
#
Just multiply by 1:
[,1]  [,2]
[1,] TRUE FALSE
[2,] TRUE  TRUE
[,1] [,2]
[1,]    1    0
[2,]    1    1





-----Oprindelig meddelelse-----
Fra: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] P? vegne af emj83
Sendt: 10. januar 2011 10:17
Til: r-help at r-project.org
Emne: [R] Changing a logical matrix into a numeric matrix


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
#
Hi Emma,

The easiest way I know uses a bit of a trick. If your matrix is named 'X'

Then: X + 0 will convert it to numeric data.

HTH,

Josh
On Jan 10, 2011, at 1:17, emj83 <stp08emj at shef.ac.uk> wrote:

            
#
On 10-Jan-11 09:17:26, emj83 wrote:
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 ------------------------------
#
Hi,

Try this,

mode(m) <- "integer"

HTH,

baptiste
On 10 January 2011 10:17, emj83 <stp08emj at shef.ac.uk> wrote:
#
Nice solution :)

Another one:

m <- matrix(c(T,T,F,T),nr=2) 
m
matrix(as.integer(m), dim(m))


-----
-- 
http://djhurio.wordpress.com/
http://twitter.com/djhurio
http://www.linkedin.com/in/martinsliberts
http://www.csb.gov.lv/