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

______________________________________________
R-help@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.

Reply via email to