[R] manipulate a matrix2

Jon Hak Jon_Hak at natureserve.org
Mon Jul 21 17:47:51 CEST 2008


The vegan matrix produces values of similarity between sample sites.
Because the matrix uses the same samples for the row names and the
column header it has duplicates on either side of the base diagonal
(below).

	3	7	8	11	12
3	0	0.6	1	0.3	0.85
7	0.66	0	1	0.65	0.95
8	1	1	0	1	1
11	0.3	0.65	1	0	0.9
12	0.85	0.95	1	0.9	0

Ideally, the matrix should look like;

	3	7	8	11	12
3	0	
7	0.66	0	
8	1	1	0	
11	0.3	0.65	1	0	
12	0.85	0.95	1	0.9	0

This is probably a question for the Vegan developers, but I really
appreciate your (and the lists) insight.

-----Original Message-----
From: jim holtman [mailto:jholtman at gmail.com] 
Sent: Monday, July 21, 2008 9:18 AM
To: Jon Hak
Cc: r-help at r-project.org
Subject: Re: [R] manipulate a matrix2

I am not familiar with the vegdist function.  What defines a duplicate
in the matrix?  There are ways if identifying if more than one row
meets the criteria duplicates and then removing them.  Can you give an
illustration of what you mean with a before/after data representation.

On Mon, Jul 21, 2008 at 10:22 AM, Jon Hak <Jon_Hak at natureserve.org>
wrote:
> Thanks Jim, that was exactly what I was after.
>
> On a second note, do you have any insight into pulling out the
> duplicates in this type of matrix?
> I thought that was what the upper=FALSE is in:
> csv.dis <- vegdist(csv.m, method='jaccard', binary=FALSE, diag=FALSE,
> upper=FALSE).  I just need either the lower or upper portion, with the
> zeros (,3 & ,3) being the dividing line.
>
>      [,3] [,5] [,6] [,9] [,11]
>
>  [3,]    0    2   3   4   5
>
>  [5,]    2    0   8   9   10
>
>  [6,]    3    8   0   14   15
>
>  [9,]    4    9   14  0    20
>
>  [11,]   5   10   15  20   0
>
> Thanks again,
>
> Jon
>
>
>
> -----Original Message-----
> From: jim holtman [mailto:jholtman at gmail.com]
> Sent: Friday, July 18, 2008 9:56 AM
> To: Jon Hak
> Cc: r-help at r-project.org
> Subject: Re: [R] manipulate a matrix2
>
> Is this what you want:
>
>> x
>      [,3] [,5] [,6] [,9] [,11]
> [,3]     1    6   11   16    21
> [,5]     2    7   12   17    22
> [,6]     3    8   13   18    23
> [,9]     4    9   14   19    24
> [,11]    5   10   15   20    25
>> library(reshape)
>> melt(x)
>      X1    X2 value
> 1   [,3]  [,3]     1
> 2   [,5]  [,3]     2
> 3   [,6]  [,3]     3
> 4   [,9]  [,3]     4
> 5  [,11]  [,3]     5
> 6   [,3]  [,5]     6
> 7   [,5]  [,5]     7
> 8   [,6]  [,5]     8
> 9   [,9]  [,5]     9
> 10 [,11]  [,5]    10
> 11  [,3]  [,6]    11
> 12  [,5]  [,6]    12
> 13  [,6]  [,6]    13
> 14  [,9]  [,6]    14
> 15 [,11]  [,6]    15
> 16  [,3]  [,9]    16
> 17  [,5]  [,9]    17
> 18  [,6]  [,9]    18
> 19  [,9]  [,9]    19
> 20 [,11]  [,9]    20
> 21  [,3] [,11]    21
> 22  [,5] [,11]    22
> 23  [,6] [,11]    23
> 24  [,9] [,11]    24
> 25 [,11] [,11]    25
>>
>
>
> On Fri, Jul 18, 2008 at 11:10 AM, Jon Hak <Jon_Hak at natureserve.org>
> wrote:
>> Building upon Jim's answer below (Thanks Jim, that helped a lot), I
> need
>> to pickup where this thread left off.   I'm using Vegan to calculate
> the
>> Jaccard's Index and the Row.Names and column names are represented in
> my
>> matrix as seen here.
>>
>>      [,3] [,5] [,6] [,9] [,11]
>>
>> [3,]    0    6   11   16   21
>>
>> [5,]    2    0   12   17   22
>>
>> [6,]    3    8   0    18   23
>>
>> [9,]    4    9   14   0    24
>>
>> [11,]   5   10   15   20   0
>>
>>
>>
>> When I use the command;
>> xy <- cbind(row=as.vector(row.names(x)), col=as.vector(colnames(x)),
>> value=as.vector(x))
>>
>> I get the list (the column value is the issue);
>>
>>      row    col   value
>>  [1,]   3     1     0
>>  [2,]   5     1     2
>>  [3,]   6     1     3
>>  [4,]   9     1     4
>>  [5,]   11   1     5
>>  [6,]   3     2     6
>>  [7,]   5     2     0
>>  [8,]   6     2     8
>>  [9,]   9     2     9
>> [10,]   11  2    10
>> [11,]   3    3    11
>> [12,]   5    3    0
>>
>> I would really like the col value to equal the actual name, not the
>> column number.  What am I missing?  The analysis is very large, 6k
x6k
>> matrix so automating the process is a high priority.
>>
>> Thanks,
>> Jon
>>
>>
>>
>> From: jim holtman <jholtman_at_gmail.com
>>
>
<mailto:jholtman_at_gmail.com?Subject=Re:%20%5BR%5D%20manipulate%20a%20m
>> atrix> >
>> Date: Mon, 25 Jun 2007 12:39:46 -0400
>>
>> Is this what you want?
>>
>>> x
>>
>>     [,1] [,2] [,3] [,4] [,5]
>>
>> [1,]    1    6   11   16   21
>> [2,]    2    7   12   17   22
>> [3,]    3    8   13   18   23
>> [4,]    4    9   14   19   24
>> [5,]    5   10   15   20   25
>>
>>
>>
>> cbind(row=as.vector(row(x)), col=as.vector(col(x)),
> value=as.vector(x))
>>
>>
>>      row col value
>>  [1,]   1   1     1
>>  [2,]   2   1     2
>>  [3,]   3   1     3
>>  [4,]   4   1     4
>>  [5,]   5   1     5
>>  [6,]   1   2     6
>>  [7,]   2   2     7
>>  [8,]   3   2     8
>>  [9,]   4   2     9
>> [10,]   5   2    10
>> [11,]   1   3    11
>> [12,]   2   3    12
>> [13,]   3   3    13
>> [14,]   4   3    14
>> [15,]   5   3    15
>> [16,]   1   4    16
>> [17,]   2   4    17
>> [18,]   3   4    18
>> [19,]   4   4    19
>> [20,]   5   4    20
>> [21,]   1   5    21
>> [22,]   2   5    22
>> [23,]   3   5    23
>>
>>
>> [24,] 4 5 24
>> [25,] 5 5 25
>>>
>>
>> On 6/25/07, Jon Hak <Jon_Hak_at_natureserve.org> wrote:
>>>
>>> I have read everything I can find on how to manipulate a results
>> matrix in
>>
>
<http://tolstoy.newcastle.edu.au/R/e2/help/07/06/19875.html#19887qlink1>
>>
>>> R and I have to admit I'm stumped. I have set up a process to
extract
>> a
>>> dataset from ArcGIS to compute a similarity index (Jaccards) in
> Vegan.
>> The
>>> dataset is fairly simple, but large, and consists of rows = sample
>> area, and
>>> columns = elements. I've been able to view the results in R, but I
>> want to
>>> get the results out to a database and a matrix that is 6000-rows x
>>> 6000-columns can be very difficult to manipulate in Windows XP. I
>> would to
>>> rotate the matrix so that the output would look like the old
> condensed
>>
>>> format in programs like Conoco. Ideally, I would like format to look
>>> something like this;
>>>
>>>
>>> Site-row Site-col Jaccard
>>> 1 1 1
>>> 1 2 .9
>>> 1 3 .6
>>> 2 1 .9
>>> 2 2 1
>>> 2 3 .75
>>>
>>> Thanks for any help,
>>>
>>>
>>>
>>>
>>> ***********************************************************
>>> John Hak
>>> Senior GIS Analyst/Sr. Ecologist
>>> NatureServe
>>> 4001 Discovery Drive
>>> Boulder, CO 80303
>>> (703) 797-4809
>>>
>>> There is perhaps no better demonstration of the folly of human
>> conceits
>>> than this distant image of our tiny world. To me, it underscores our
>>> responsibility to deal more kindly with one another, and to preserve
>> and
>>> cherish the pale blue dot, the only home we've ever known. --Carl
>> Sagan
>>>
>>>
>>> ______________________________________________
>>> R-help_at_stat.math.ethz.ch 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.
>>>
>>
>> --
>> Jim Holtman
>> Cincinnati, OH
>> +1 513 646 9390
>>
>> What is the problem you are trying to solve?
>>
>>        [[alternative HTML version deleted]]
>>
>>
>>
>>
>>
>>
>>        [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> 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.
>>
>
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem you are trying to solve?
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?



More information about the R-help mailing list