[Rcpp-devel] Value type of DataFrame::operator[]

Serguei Sokol serguei.sokol at gmail.com
Mon Dec 9 11:24:24 CET 2019


Le 07/12/2019 à 00:29, Qiang Kou a écrit :
> What about using "TYPEOF"? Please see R Internals 
> (https://cran.r-project.org/doc/manuals/r-release/R-ints.html#SEXPTYPEs) 
> for more details.
... and if you want to convert integer encoded SEXPTYPE to a human 
readable string you can use

const char * Rf_type2char(SEXPTYPE);

By the way, conversion in the opposite direction is made by

SEXPTYPE Rf_str2type(const char *);

Best,
Sergueï.

> 
> #include <Rcpp.h>
> 
> using namespace Rcpp;
> 
> // [[Rcpp::export]]
> DataFrame rcpp_df(){
>    NumericVector   numeric = {1,3};
>    IntegerVector   integer = {1,3};
>    CharacterVector character = {"B","D"};
>    LogicalVector   logical = {false, true};
> 
>    DataFrame df = DataFrame::create(Named("numeric") = numeric,
>                                  Named("integer") = integer,
>                                  Named("character") = character,
>                                  Named("logical") = logical);
> 
>    Rcpp::Rcout << "numeric:" << TYPEOF(df["numeric"]) << std::endl;
>    Rcpp::Rcout << "integer:" << TYPEOF(df["integer"]) << std::endl;
>    Rcpp::Rcout << "character:" << TYPEOF(df["character"]) << std::endl;
>    Rcpp::Rcout << "logical:" << TYPEOF(df["logical"]) << std::endl;
> 
>    return df;
> }
> 
> /*
>  > Rcpp::sourceCpp("test.cc")
>  > df <- rcpp_df()
> numeric:14
> integer:13
> character:13
> logical:10
> */
> 
> On Fri, Dec 6, 2019 at 2:59 PM Brook Milligan <brook at nmsu.edu 
> <mailto:brook at nmsu.edu>> wrote:
> 
>     Is there a way to discover the value type for the result of calling
>     DataFrame::operator[]?  For example, is there a metafiction that
>     will deduce the type?
> 
>     A similar question could be asked about the result of calling
>     Vector::operator[].
> 
>     I understand that these functions actually return a proxy, but it
>     would be very helpful to find out the underlying value type.
> 
>     Thanks for your help.
> 
>     Cheers,
>     Brook
> 
>     _______________________________________________
>     Rcpp-devel mailing list
>     Rcpp-devel at lists.r-forge.r-project.org
>     <mailto:Rcpp-devel at lists.r-forge.r-project.org>
>     https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
> 
> 
> _______________________________________________
> 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
> 



More information about the Rcpp-devel mailing list