Message-ID: <XFMail.110110093918.ted.harding@wlandres.net>
Date: 2011-01-10T09:39:18Z
From: (Ted Harding)
Subject: Changing a logical matrix into a numeric matrix
In-Reply-To: <1294651046014-3206797.post@n4.nabble.com>
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 ------------------------------