[R] Matrix Indexing

Gavin Simpson gavin.simpson at ucl.ac.uk
Sat Apr 12 12:47:37 CEST 2008


On Sat, 2008-04-12 at 10:56 +0100, Rory Winston wrote:
> Hi
> 
> Does anyone know how I might pick out diagonal elements of a matrix using a
> vector?
> 
> If I create a matrix a:
> 
> a <- matrix(c(1:16), 4, byrow=TRUE)

Not sure if this does all that you describe below, but:

diag(a)

and you can subset that to get the first 3 elements say:

diag(a)[1:3]

HTH

G

> 
> and I want to pick out the elements (1,1),(2,2),(3,3), or another arbitrary
> diagonal (upper or lower), is there any way I can use a vector to do this?
> So if I want a diagonal of size 3, I could create a vector like x <- c(0:2)
> and then pick out a[1+x,1+x]? Currently, using a vector in this way gives me
> a sub-matrix, as I get the cartesian product of the indexes (which is to be
> expected, as I guess I am misusing the vector notion here).
> 
> Anyone know how to do this?
> 
> Cheers
> Rory
> 
> 	[[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.
-- 
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
 Dr. 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
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%



More information about the R-help mailing list