[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