在Rcpp功能foo
中,data
可能是一个大的数据框架,因此,我也将其作为一个参考。 现在,我想把它的缺省价值确定为空数据框架,以便用户能够简单地在R中打电话foo(<>/code>,但不得打
foo(data.frame()
。
我试图这样做:
#include <Rcpp.h>
using namespace Rcpp;
//[[Rcpp::export]]
DataFrame foo(const DataFrame &data = DataFrame())
{
//Do something
}
但看来,<代码>DataFrame(>)被视为违约值。 我试图推翻这一职能:
#include <Rcpp.h>
using namespace Rcpp;
//[[Rcpp::export]]
DataFrame foo(const DataFrame &data)
{
//Do something
}
//[[Rcpp::export]]
DataFrame foo()
{
DataFrame data = DataFrame::create();
return foo(data);
}
但是,Rcpp告诉我有相互矛盾的声明。 作者:
#include <Rcpp.h>
using namespace Rcpp;
//[[Rcpp::export]]
DataFrame foo(Nullable<DataFrame> data_ = R_NilValue)
{
DataFrame data;
if (data_.isNotNull())
{
data = DataFrame(data_);
}
else
{
data = DataFrame::create();
}
// Do something
}
它目前运作良好,但我想:
- Is this the best (simplest) way to do this?
- In this case, will
data
passed as copy or refernce?
还是任何其他解决办法?