等同于 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*
谓词。
我正在尝试将一些用于距离函数的 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*
谓词。