等同于 RCPP 中的 Is.factor 和 is.numeric

Equivalent of Is.factor and is.numeric in RCPP

我正在尝试将一些用于距离函数的 R 代码移植到 RCPP:

distanceFunction <- function(row1, row2){
  distance = 0
    for(f in names(row2))
      if (is.factor(row2[[f]])){
        if (!(row2[[f]] == row1[[f]]))
          distance = distance + 1
      } else if(is.numeric(row2[[f]])) {
        distance = distance + abs(row2[[f]] - row1[[f]])
      }
  distance
}

很遗憾,我找不到如何检查数据类型(RCPP 中的因子或数字)

"Factor" 不是 SEXP 级别表示的类型,因此不是 Rcpp 在 C++ 级别支持的类型。我建议你用整数表示来调用你的函数。

is.numeric() 的等价物可以通过多种方式进行测试;有关 C++ 方法,请参阅 Writing R Extensions for how it is done in C, and several posts at Rcpp Gallery。您可以使用特征以及 is* 谓词。