我在Rcpp中有两个函数:
//[[Rcpp::export]]
DataFrame func1(DataFrame& x) {
...
}
//[[Rcpp::export]]
NumericVector func2(NumericMatrix& x) {
...
}
如何编写常用功能
SEXP func(SEXP& x) {
...
}
如果输入为func1
,则使用DataFrame
;如果输入为func2
,则使用Matrix
。
我试图在网上查找示例,例如此处给出的示例:http://gallery.rcpp.org/articles/fast-factor-generation/但我无法让它工作。
答案 0 :(得分:3)
你需要is<>
,即这样的东西:
if( is<DataFrame>(x) ){
return func1(x) ;
} else {
return func2(x) ;
}
但要使其正常工作,您需要在提供const DataFrame&
之前使用对const的引用,即DataFrame
或创建func1
。像这样:
if( is<DataFrame>(x) ){
DataFrame df(x) ;
return func1(df) ;
} else {
NumericMatrix m(x) ;
return func2(m) ;
}