Re: [R] vectors of different length in a matrix

From: Jari Oksanen <>
Date: Mon 22 Aug 2005 - 23:13:04 EST

On Mon, 2005-08-22 at 08:56 -0400, Duncan Murdoch wrote:
> On 8/22/2005 8:45 AM, Marten Winter wrote:
> > HI!
> >
> > I?ve 3 vectors of different length (a,b,c) and want to arrange them in a
> > matrix a,b,c as rows and the figures of these vectors in the columns
> > (with that matrix i want to calculate a distance between thes vectors -
> > vegan - vegdist - horn). Is there a possibilty to create such a matrix
> > and to fill up the missing fields with NA?s automatically????
> Filling with NA's is the hard part; R normally likes to recycle vectors
> that are too short.
> Here's one way, probably not the best:
> x <- matrix(NA, 3, max(length(a), length(b), length(c)))
> x[1,seq(along=a)] <- a
> x[2,seq(along=b)] <- b
> x[3,seq(along=c)] <- c
> Another way to do it would be to extend all the vectors to the same
> length by appending NAs, then using rbind.
Another issue is that this would fail at the next step outlined in the original message ("vegan - vegdist - horn"), since that step won't accept NAs. So the original schedule was bad. If you fill with zeros, then the 'vegdist' step would work in the sense that it produces numbers. I don't know if these numbers would make any sense if the vectors had nothing to do with each other originally, and columns would be of mixed meaning after stacking into a matrix. If your vector elements had identities ("names") originally, then you should stack your data so that entries with the same identity go to the same column. It is difficult to imagine Horn index used in cases where you don't have these identities -- specifically species names.

cheers, jari oksanen

Jari Oksanen -- Dept Biology, Univ Oulu, 90014 Oulu, Finland
email, homepage

______________________________________________ mailing list
PLEASE do read the posting guide!
Received on Mon Aug 22 23:27:04 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:39:55 EST