[R] vectors of different length in a matrix

Jari Oksanen jarioksa at sun3.oulu.fi
Mon Aug 22 15:13:04 CEST 2005


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 jari.oksanen at oulu.fi, homepage http://cc.oulu.fi/~jarioksa/




More information about the R-help mailing list