Hi Pratibha, On 4 June 2012 at 16:12, Pratibha Rana wrote: | I am at my wits end trying to create a dataframe from a list of values that I | have. here's the code | | try{ | int size = argTypes.getColumnCount(); | std::vector<std::string> nameVec(size); | std::vector<int> lenVec(size); | std::vector<int> scaleVec(size);
Good. Three STL vectors which should get autmatic conversion via wrap(). [...] | //create the dataframe | Rcpp::List df = Rcpp::List::create(Rcpp::Named("datatype",nameVec), | Rcpp::Named("length",lenVec), | Rcpp::Named("scale",scaleVec)); | Rcpp::DataFrame df_final = Rcpp::DataFrame::create(df); | return df_final; [...] | The std::vectors are created fine but the list is not created | (gdb) p R_PV(df) | $3 = 0 | | | I have tried a lot of variation like creating the dataframe directly without | first creating the list. Nothing seems to be working. It should work. I believe we posted example on the list, blog, possibly in RcppExamples, ... In fact, the latter one may be the best key. Consider this example taken straight from the RcppExamples packages (which never became "the" collection of examples [ contributions welcome ] but has this ...) RcppExport SEXP RcppDataFrame(SEXP Dsexp) { try { // or use BEGIN_RCPP macro // construct the data.frame object Rcpp::DataFrame DF = Rcpp::DataFrame(Dsexp); // and access each column by name Rcpp::IntegerVector a = DF["a"]; Rcpp::CharacterVector b = DF["b"]; Rcpp::DateVector c = DF["c"]; // do something a[2] = 42; b[1] = "foo"; c[0] = c[0] + 7; // move up a week // create a new data frame Rcpp::DataFrame NDF = Rcpp::DataFrame::create(Rcpp::Named("a")=a, Rcpp::Named("b")=b, Rcpp::Named("c")=c); // and return old and new in list return(Rcpp::List::create(Rcpp::Named("origDataFrame")=DF, Rcpp::Named("newDataFrame")=NDF)); } catch( std::exception &ex ) { // or use END_RCPP macro forward_exception_to_r( ex ); } catch(...) { ::Rf_error( "c++ exception (unknown reason)" ); } return R_NilValue; // -Wall } The main difference is that we use Rcpp vectors. So you could try -- wrap() in the create() call -- converting the Rcpp vectors to STL vectors -- debugging why STL vectors don't pass through Please keep the list posted on your progress. Dirk -- Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel