[R] Indexing matrices from the Matrix package with [i, j] seems to be very slow. Are there "faster alternatives"?

Søren Højsgaard sorenh at math.aau.dk
Sun Jun 24 22:50:53 CEST 2012


Dear all,

Indexing matrices from the Matrix package with [i,j] seems to be very slow. For example:

 library(rbenchmark)
 library(Matrix) 
 mm <- matrix(c(1,0,0,0,0,0,0,0), nr=20, nc=20)
 MM <- as(mm, "Matrix")
 lookup <- function(mat){
   for (i in 1:nrow(mat)){
     for (j in 1:ncol(mat)){
        mat[i,j]
     }
   }
}

 benchmark(lookup(mm), lookup(MM),  columns=c("test", "replications", "elapsed", "relative"), replications=50)
       test     replications elapsed relative
1 lookup(mm)           50    0.01           1
2 lookup(MM)           50    8.77      877

I would have expected a small overhead when indexing a matrix from the Matrix package, but this result is really surprising... 
Does anybody know if there are faster alternatives to [i,j] ?

Best regards
Søren



More information about the R-help mailing list