我正在創建一個包含Rcpp的包,並且我想要一個功能可以接受爲參數std::string
或int
。我該怎麼做?創建兩個具有相同名稱但參數類型不同的R函數
我有以下功能:
int myFunction(std::string varname);
RcppExport SEXP myFunction(SEXP varname) {
BEGIN_RCPP
Rcpp::RObject __result;
Rcpp::RNGScope __rngScope;
std::string myVarname = as<std::string>(varname);
__result = Rcpp::wrap(myFunction(myVarname));
return __result;
END_RCPP
}
int myFunction(int varname);
RcppExport SEXP myFunction(SEXP varname) {
BEGIN_RCPP
Rcpp::RObject __result;
Rcpp::RNGScope __rngScope;
int myVarname = as<int>(varname);
__result = Rcpp::wrap(myFunction(myVarname));
return __result;
END_RCPP
}
我已經實現兩個C++函數(一個承認的int
,而另一個承認一個std::string
)
以我的文件,其中我定義將R功能我:
myFunction <- function(varname) {
.Call('myFunction', PACKAGE = 'myPackage', varname)
}
當我建立我的包,我得到了以下錯誤:
RcppExports.cpp:78:17: error: redefinition of ‘SEXPREC* myFunction(SEXP)’
RcppExport SEXP myFunction(SEXP varname) {
^
RcppExports.cpp:67:17: note: ‘SEXPREC* myFunction(SEXP)’ previously defined here
RcppExport SEXP myFunction(SEXP varname) {
這是一個很好的解決方案,它解決了我的問題。謝謝你的時間 –