Hello Gavin! I thank you so much that you help me here. Only to answer your questions there are 452 samples (species) in A and the same number in B. Unfortunately I will get the book from Legendre & Legendre only in 2 days (small library) but I think for the moment I am busy to try and learn with the codes you gave me here. For me it seems that this will solve all the problems I have at the moment. Now it is my turn to learn about it.
Once again: thanks Greetings Birgit Am 20.06.2007 um 18:02 schrieb Gavin Simpson: > On Wed, 2007-06-20 at 15:09 +0200, Birgit Lemcke wrote: >> Hello Gavin and thanks for your answer. >> >> Your completely right I dont need the diagonal that is the bisecting >> line of the angle. >> >> I need another diagonal of the (now) matrix. >> >> A1 A2 A3 A4 B1 B2 B3 B4 >> A1 >> A2 >> A3 >> A4 >> B1 X >> B2 X >> B3 X >> B4 X >> > > Not easily, especially without knowing how many samples are in A or B, > although all that is really needed is some careful subsetting of the > dist object and a minor amount of programming - unfortunately after > close to two weeks intensive teaching my brain isn't up to doing that > just now. > > One simple way to do this is to use the distance() function in my > analogue package (on CRAN). distance() can calculate the > dissimilarities > between one group of samples and another. Here is a simple example > using > some dummy data, from ?distance: > > ## simple example using dummy data > train <- data.frame(matrix(abs(runif(200)), ncol = 10)) > rownames(train) <- LETTERS[1:20] > colnames(train) <- as.character(1:10) > fossil <- data.frame(matrix(abs(runif(100)), ncol = 10)) > colnames(fossil) <- as.character(1:10) > rownames(fossil) <- letters[1:10] > > ## calculate distances/dissimilarities between train and fossil > ## samples > test <- distance(train, fossil) > > test is now a matrix, the diagonal elements of which are the values > that > you appear to want: > > diag(test) > > if I'm reading your diagram correctly. Note that for this, you need to > be comparing row 1 from matrix A with row 1 from matrix B - if they > are > in some other order, then this won't work. > > distance() has a version of Gower's coefficient for mixed that allows > you to specify weights. The function is just about clever enough to > allow missing values if you use method = "mixed" in distance(). Be > sure > to read up about Gower's mixed coefficient in his 1971 paper (Gower, > 1971, Biometrics 23; 623--637) and the use that weights and the range > parameter Rj are put to, or see the relevant section in Legendre & > Legendre (1998). > >> I need for example the diagonal that compares A1 with B1. >> Do you have an idea how I can handle this? >> >> What is the effect of this code? >> >> all.equal(diags, diag(as.matrix(dis.bc))) > > This was showing you that the diagonals of the dissimilarity matrix > are > just a vector of zeroes. all.equal tests equality of its arguments. > >> >> Thanks a lot and sorry for my inability to solve my problems on my >> own. > > You're welcome. Using R is a learning experience. You only need to > grovel and apologise if you have not done your homework before posting > and not read the FAQ, the documentation or searched the archives, or > followed the posting guide. Which is not the case here. > > HTH > > G > >> >> Am 20.06.2007 um 14:11 schrieb Gavin Simpson: >> >>> On Wed, 2007-06-20 at 13:26 +0200, Birgit Lemcke wrote: >>>> Hello, >>>> >>>> I am using Mac OS X on a power book and R 2.5.0 >>>> >>>> I try to extract a diagonal from a dissimilarity matrix made with >>>> dsvdis, with this code: >>>> >>>> diag(DiTestRR) >>>> >>>> But I get this error message: >>>> >>>> Fehler in array(0, c(n, p)) : 'dim' spezifiziert ein zu groes Array >>>> >>>> english: >>>> >>>> Error in array(0, c(n, p)) : 'dim' specifies a too big array. >>>> >>>> Is there a limit to extract diagonals? >>> >>> The returned object is not a matrix, but an object of class "dist" >>> which >>> doesn't store the diagonals or the upper triangle of the >>> dissimilarity >>> matrix to save memory. You need to convert the dist object to a >>> matrix >>> first, then extract the diagonal. But, as this shows: >>> >>>> require(labdsv) >>>> ?dsvdis >>>> data(bryceveg) >>>> ?dsvdis >>>> dis.bc <- dsvdis(bryceveg,index="bray/curtis") >>> Warning in symbol.For("dsvdis") : 'symbol.For' is not needed: please >>> remove it >>>> diag(as.matrix(dis.bc)) >>> >>> This is meaningless as the diagonals are all zero, as they should >>> be; >>> this is the distance between a site and itself. >>> >>>> >>>> I hope somebody will help me! >>> >>> So perhaps you could explain why you want the diagonal. It would be >>> easier to just do: >>> >>> diags <- rep(0, length = nrow(bryceveg)) >>> >>> That will be without the sample labels, but that is easily rectified >>> >>>> names(diags) <- rownames(bryceveg) >>>> all.equal(diags, diag(as.matrix(dis.bc))) >>> [1] TRUE >>> >>> So you'll have to reformulate your question if this is not what you >>> wanted. >>> >>> A word of warning, do not do diag(dis.bc)) on the above as it >>> brought my >>> Linux box to it's knees trying to do something silly - easily >>> recoverable, but beware. >>> >>> HTH >>> >>> G >>> >>>> >>>> Greetings >>>> >>>> Birgit Lemcke >>> >>> -- >>> %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~ >>> %~% >>> Gavin Simpson [t] +44 (0)20 7679 0522 >>> ECRC, UCL Geography, [f] +44 (0)20 7679 0565 >>> Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk >>> Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/ >>> UK. WC1E 6BT. [w] http://www.freshwaters.org.uk >>> %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~ >>> %~% >>> >> >> Birgit Lemcke >> Institut fr Systematische Botanik >> Zollikerstrasse 107 >> CH-8008 Zrich >> Switzerland >> Ph: +41 (0)44 634 8351 >> [EMAIL PROTECTED] >> >> >> >> >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@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. > -- > %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% > Gavin Simpson [t] +44 (0)20 7679 0522 > ECRC, UCL Geography, [f] +44 (0)20 7679 0565 > Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk > Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/ > UK. WC1E 6BT. [w] http://www.freshwaters.org.uk > %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% > Birgit Lemcke Institut für Systematische Botanik Zollikerstrasse 107 CH-8008 Zürich Switzerland Ph: +41 (0)44 634 8351 [EMAIL PROTECTED] [[alternative HTML version deleted]]
______________________________________________ R-help@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.