Hello,

this sounds like a newbie question, but I haven't been able to find a good answer in Rcpp's documentation, source or testcases..

Say I have an internal data type which I want to wrap/unwrap as a DataFrame.

template<> SEXP wrap(const Foo &foo) {
  Rcpp::DataFrame dataframe;
  for (auto key : foo.keys()) {
    if (key.is_numeric()) {
      Rcpp::NumericVector vec;
      // Fill vector with numbers
      dataframe[ key ] = vec;
    }
    else if (key.is_string()) {
      Rcpp::StringVector vec;
      // Fill vector with strings
      dataframe[ key ] = vec;
    }
    // etc
  }
}

template<> Foo as(SEXP sexp) {
  Rcpp::DataFrame dataframe(sexp);
  // now what?
}


First, I need to iterate over all vectors in the dataframe. I could access a vector using
  dataframe["my_key"]
but that would require me to have a list of all the keys/column names first. R has a colnames() function, but getting that into an Rcpp::Function and calling it seems overly complicated.. I couldn't find anything in Rcpp's source or testcases.. but maybe there's a simpler way?


Problem number two, how do I type the vector once I have it? The dataframe can contain NumericVector or StringVector (or possibly something different). Should I just construct each type, try/catch the exceptions and see what fits, or is there a better way to determine the type of a SEXP?



Thanks!
Christian

--
Christian Authmann
Philipps-Universität Marburg
Fachbereich Mathematik und Informatik
AG Datenbanksysteme
Hans-Meerwein-Straße
D-35032 Marburg
_______________________________________________
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

Reply via email to