[Rcpp-devel] Transform arbitrary R object into std::vector<vector<double>>

Paul Saary rcpp at paulsaary.de
Thu May 19 12:46:09 CEST 2016


Hello,

I have been trying to solve this problem for quite some time now, so I
thought I'd ask here.

I am trying to write a Cpp function, accepting multiple input types,
such as matrices and dataframes.

I understood that I could do this by accepting any SEXP object.

The core problem now is to transform these object into something my
software can use, which would be an object of type
std::vector<vector<double>>.

Currently my function looks like this:

List handleRObject(SEXP Robj){
	std::vector<vector<double>> internalMatrix;
	
	// convert Robj to internalMatrix
	// thats where I am stuck	

	// do some stuff and return List
	return(wrap(someoutput))
}

I tried many differnt things (using as, switch statements, etc...), but
I do not seem to fully grasp on how tonhandle this problem, as none of
them worked.

I can transform a NumericMatrix using this code, but could not addapt
this to a more general approach.

	// use rMatrix as input
        int nc = rMatrix.ncol();
        internalMatrix.resize(nc);
        for( int i=0; i<nc; i++){
            NumericMatrix::Column col = rMatrix(_,i) ;
            internalMatrix[i].assign( col.begin() , col.end() ) ;
        }

I though, maybe someone can give me a hint on how to solve this?

Bests,

Paul


More information about the Rcpp-devel mailing list