Rcpp函数,根据输入返回矩阵或数据帧

Rcpp函数,根据输入返回矩阵或数据帧,r,rcpp,R,Rcpp,我在Rcpp中有两个功能: //[[Rcpp::export]] DataFrame func1(DataFrame& x) { ... } //[[Rcpp::export]] NumericVector func2(NumericMatrix& x) { ... } 如何编写通用函数 SEXP func(SEXP& x) { ... } 如果输入是数据帧,则使用func1;如果输入是矩阵,则使用func2 我试图在网上查找示例,比如这里给出的示例:但

我在Rcpp中有两个功能:

//[[Rcpp::export]]
DataFrame func1(DataFrame& x) {
  ...
}

//[[Rcpp::export]]
NumericVector func2(NumericMatrix& x) {
  ...
}
如何编写通用函数

SEXP func(SEXP& x) {
  ...
}
如果输入是
数据帧
,则使用
func1
;如果输入是
矩阵
,则使用
func2

我试图在网上查找示例,比如这里给出的示例:但我无法让它工作

您需要的
,例如:

if( is<DataFrame>(x) ){
   return func1(x) ; 
} else {
   return func2(x) ;
}
if( is<DataFrame>(x) ){
    DataFrame df(x) ;
    return func1(df) ; 
} else {
    NumericMatrix m(x) ;
    return func2(m) ;
}

您是否可以给出一个使用
const DataFrame&
的代码片段,因为我希望避免传递整个
DataFrame
按值传递或按引用传递对于Rcpp对象是相同的。这是所有的文件。谢谢。我在哪里合并
常量数据帧
?在
func1
dataframefunc1(constdataframe&x){…}