Re: [R] Populate matrix from data.frame

From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Thu, 28 Jun 2007 07:52:22 +0100 (BST)

On Thu, 28 Jun 2007, Andrej Kastrin wrote:

> Dear all,
>
> I have a data frame
> a <- data.frame(cbind(x=c('a','a','a','b','c'),
> y=c('a','b','c','d','e'),z=c(1,2,3,4,5)))
> > a
> x y z
> 1 a a 1
> 2 a b 2
> 3 a c 3
> 4 b d 4
> 5 c e 5
>
> and a matrix
> mm <- matrix(0,5,5)
> colnames(mm) <- c('a','b','c','d','e')
> rownames(mm) <- c('a','b','c','d','e')
> > mm
> a b c d e
> a 0 0 0 0 0
> b 0 0 0 0 0
> c 0 0 0 0 0
> d 0 0 0 0 0
> e 0 0 0 0 0
>
> How to populate matrix in a way that first column of data frame 'a'
> correspond to rownames(mm), second column to colnames(mm) and the third
> column is the element of matrix 'mm'?

mm[cbind(a$x, a$y)] <- a$z

Please read about the forms of indexing matrices in 'An Introduction to R'.

-- 
Brian D. Ripley,                  ripley_at_stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
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.
Received on Thu 28 Jun 2007 - 07:03:03 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 28 Jun 2007 - 10:32:38 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.