我正在尝试向RCPP移植一些距离函数的R代码:
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中的因子或数字)
"因子"不是SEXP
级别表示的类型,因此RCPP在C 级别不支持。我建议您使用整数表示调用您的功能。
可以通过多种方式测试is.numeric()
的等效物。请参阅编写r扩展名,以了解C 方式在RCPP画廊中的几个帖子。您可以使用特征以及is*
谓词。