[R] Trouble creating and adjacency matrix
Rolf Turner
rolf.turner at xtra.co.nz
Mon Sep 26 05:30:26 CEST 2011
See end of message.
On 26/09/11 10:07, Spartina wrote:
> Hello all,
>
> I'm having trouble creating an adjacency matrix.
>
> Basically, I need to turn the following distance matrix into an adjacency
> matrix based on whether values are>1.5 or not. If they are>1.5, then the
> returned value should be 0. If they are =<1.5, then the returned value
> should be 1.
>
> DistanceMatrix:
>
> A B C D E
> [1,] 0.000000 2.828427 1.581139 2.236068 2.000000
> [2,] 2.828427 0.000000 1.581139 4.123106 2.000000
> [3,] 1.581139 1.581139 0.000000 2.549510 2.121320
> [4,] 2.236068 4.123106 2.549510 0.000000 4.123106
> [5,] 2.000000 2.000000 2.121320 4.123106 0.000000
>
> I'm trying to do this via the if statement, however I can't get it to work
> and it keeps returning an error message:
>
>> if(DistanceMatrix>1.5) {0} else {1}
> [1] 1
> Warning message:
> In if (DistanceMatrix> 1.5) { :
> the condition has length> 1 and only the first element will be used
>
>
> I am brand new to R and have a very limited knowledge of functions and
> syntax. Maybe the if statement is not even the right way of tackling this
> problem....
Well, you got that right. It isn't. Do:
AdjacencyMatrix <- 0 + (DistanceMatrix <= 1.5)
Note that the ``0 + '' bizzo is a trick to coerce a logical matrix
(entries "TRUE" or "FALSE") into a numeric matrix of 0-s and 1-s.
Learn to speak R. It's worth the effort.
cheers,
Rolf Turner
More information about the R-help
mailing list