[Rcpp-devel] How to set stringsAsFactors=FALSE in Rcpp::DataFrame?

Dirk Eddelbuettel edd at debian.org
Tue Jul 22 13:35:04 CEST 2014


On 22 July 2014 at 12:59, Asis Hallab wrote:
| Dear Rcpp-Experts,
| 
| how can I get the equivalent of the R expression
| 
| my.df <- data.frame( …, stringsAsFactors=FALSE )
| 
| in Rcpp?

The same way, but setting a variable name stringsAsFactors to FALSE, or
rather its lowercase C++ equivalent.

In cases like this it is a good idea to peruse the unit tests where you would
have found

// [[Rcpp::export]]
DataFrame createTwoStringsAsFactors(){
    IntegerVector v = IntegerVector::create(1,2,3);
    std::vector<std::string> s(3);
    s[0] = "a";
    s[1] = "b";
    s[2] = "c";
    return DataFrame::create(_["a"] = v,
                             _["b"] = s,
                             _["stringsAsFactors"] = false );
}

I prefer Named("....") over _["..."] but it amounts to the same.

Dirk


| 
| I have this code in Rcpp:
||    return( DataFrame::create(
|       Named( "acc" )       = accsCol,
|       Named( "ec" )        = ecCol,
|       Named( "prot.acc" )  = protCol,
|       Named( "term_type" ) = termTypeCol
|     ) );
| 
| Calling the above from R, I realize, that the returned DataFrame's
| columns are factors and not character-vectors, as I need them to be.
| 
| How to achieve this?
| Should I just convert them in R itself, like in the following example?
| 
| for ( i in 1:ncol(my.df) ) {
|   my.df[,i] <- as.character( my.df[,i] )
| }
| 
| Or is there a better - and possibly more efficient - way to achieve this?
| 
| As always your help will be much appreciated.
| 
| Have a pleasant day and
| Cheers!
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
-- 
http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org


More information about the Rcpp-devel mailing list