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 -- View this message in context: http://r.789695.n4.nabble.com/Changing-a-logical-matrix-into-a-numeric-matrix-tp3206797p3206797.html Sent from the R help mailing list archive at Nabble.com.
Just multiply by 1:> m <- matrix(c(T,T,F,T),nr=2) > m[,1] [,2] [1,] TRUE FALSE [2,] TRUE TRUE> m*1[,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 -- View this message in context: http://r.789695.n4.nabble.com/Changing-a-logical-matrix-into-a-numeric-matrix-tp3206797p3206797.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
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:> > 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 > -- > View this message in context: http://r.789695.n4.nabble.com/Changing-a-logical-matrix-into-a-numeric-matrix-tp3206797p3206797.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
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 EmmaAs 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:> > 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 > -- > View this message in context: http://r.789695.n4.nabble.com/Changing-a-logical-matrix-into-a-numeric-matrix-tp3206797p3206797.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
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/ -- View this message in context: http://r.789695.n4.nabble.com/Changing-a-logical-matrix-into-a-numeric-matrix-tp3206797p3206917.html Sent from the R help mailing list archive at Nabble.com.