Rcpp::DataFrame - 查找列类型

Rcpp::DataFrame - find column type

在我能找到的所有Rcpp示例中,必须知道DataFrame列的类型,然后才能将列提取为向量,例如:

// 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"];

在 R 中,可以使用 sapply() 函数和 classtypeof.

查找列类型

但是,我在Rcpp中找不到负责类型检查的外部API。有没有办法以编程方式查找列类型?

你对我来说意义不大。

您的示例在列的 names 上,这是有效的,也是有记录的。

但是你希望在 type 上选择小马和选择。好吧,我有一个坏消息要告诉你:C++ 通常没有自反性。所以我们需要提供额外的信息。为此,我们经常使用名称。这让我们回到之前的案例。

相信我:做得更好会很好。不过,我不确定我知道我们该怎么做。

感谢 Dirk 的评论,我在 RcppGallery 文章中找到了解决方案:

Dynamic Wrapping and Recursion with Rcpp

TYPEOFRf_isFactor 应该足以确定 DataFrame 的列类型。 Rinternals.h 定义以下类型,这些类型将由 TYPEOF 返回:

#define INTSXP      13    /* integer vectors */
#define REALSXP     14    /* real variables */
#define CPLXSXP     15    /* complex variables */
#define STRSXP      16    /* string vectors */
#define DOTSXP      17    /* dot-dot-dot object */
#define ANYSXP      18    /* make "any" args work. */
#define VECSXP      19    /* generic vectors */
...