[Rcpp-devel] matrix indexing

Romain Francois francoisromain at free.fr
Sat Jan 23 21:05:43 CET 2010


Motivated by Christophe's question on R-help (cc'ed), I'd like to add 
facilities for matrix (and maybe arrays) indexing into the new Rcpp api.

The classic api already ships matrix indexing through RcppMatrix and 
RcppMatrixView classes. I'm not a big fan of using round brackets for 
indexing, but apparently one cannot pass more than one parameter to [] 
so ... I guess I'll have to sacrifice look and feel for a minute.

Anyway I was thinking we can maybe add NumericVector::operator()( int, 
int) (other vectors as well), so that we can do :

NumericVector m(x) ;
double x11 = m(0,0) ;

I was also thinking maybe making some sort of indexer class to take care 
of conversion of 2 indices into 1d index; something like this pseudo code :

NumericVector m(x) ;
NumericVector::MatrixIndexer indexer(m) ;
double x11 = m[ indexer(0,0) ] ;

But this might be even more ugly than operator().

Given than a REALSXP can change its mind about being a matrix, I'm not 
sure I want to subclass NumericVector into NumericMatrix, etc. ...

Ideas ?


Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
|- http://tr.im/KfKn : Rcpp 0.7.2
|- http://tr.im/JOlc : External pointers with Rcpp
`- http://tr.im/JFqa : R Journal, Volume 1/2, December 2009

More information about the Rcpp-devel mailing list