[R] Filling matrices

Berend Hasselman bhh at xs4all.nl
Mon Mar 19 22:21:54 CET 2012


On 19-03-2012, at 22:07, David Stevens wrote:

> I'm a bit clumsy about many things in R. Here's my problem. I'm trying to build a square sparse matrix and populate it without looping (bad practice, right). I have vectors of matched row/column pairs for which the matrix entries have common characteristics and am look for a way to fill the entries. So, if the matrix is A[20 by 20], and I might have rows
> 
> iRows <- c(2,3,4,6,7,8,10,11,12,14,15,16,18,19)
> 
> and columns
> 
> iCols <- c(1,2,3,5,6,7,9,10,11,13,14,15,17,18)
> 
> and you see these are most of the subdiagonal terms in A from rows 2-19. They are all calculated in a similar way using values from a data frame in which the terms are generally in iRows and iCols.
> 
> I could loop through each pair and all's well, but my question is whether there's an R-certified alternative, that will speed things up when the matrix is much larger (it will be - this is a prototype).
> 
> Any thoughts?

pIndex <- cbind(iRows,iCols)

A <- matrix(0,nrow=20,ncol=20)

A[pIndex] <- 9
A

Berend



More information about the R-help mailing list