[Rcpp-devel] Named vectors

Andrew Redd amredd at gmail.com
Thu Sep 9 16:52:37 CEST 2010


What is the appropriate way to use/convert named vectors in C++ with
Rcpp.  Basically I have a named vector of parameters that pass into
the function.  I cannot be certain of their order, so would like to
extract them by name.  For those initialized in C++ a
std:map<std::string, double> should work, but how do declare one from
a SEXP pointer that is passed in?  For example:

draw <- cxxfunction(signature(A="numeric",t="numeric", params="numeric"),body="
    SEXP draw( SEXP A, SEXP t, SEXP params){
      Rcpp::NumericVector Admissions(A);
			Rcpp::NumericVector T(t);
			std::map<std::string, double> Params(params);
			std::vector<double> draws;
			for(int i=0;i<params[\"n\"];i++){
				draws.pushback(rbinom(Admissions[T[i]+1,2], 1/(1+exp(-params[\"nu\"])))));
			}
			return wrap(draws);
    }
	",plugin='Rcpp')
This of course does not compile because of std::map<std::string,
double> Params(params); is not valid.  But is shows more of less what
I'm trying to do.


Thanks,
Andrew Redd


More information about the Rcpp-devel mailing list