如何导出带有默认参数的Rcpp类方法 我有一个C++类MyCclass,它有一个方法:代码> Foo>(int x=0),它的参数为代码>代码> x>代码>默认值=0。C++类可以通过导出到R类 RCPP_MODULE(my_module) { class_< myClass >( "myClass" ) .constructor() .method( "foo", &myClass::foo ) ; }

如何导出带有默认参数的Rcpp类方法 我有一个C++类MyCclass,它有一个方法:代码> Foo>(int x=0),它的参数为代码>代码> x>代码>默认值=0。C++类可以通过导出到R类 RCPP_MODULE(my_module) { class_< myClass >( "myClass" ) .constructor() .method( "foo", &myClass::foo ) ; },r,rcpp,R,Rcpp,但是在我的情况下它不起作用。我最近也有同样的问题。在查看了处理类的rcpp源文件之后(在我的设置中,~/R/x86\u 64-pc-linux-gnu-library/3.2/rcpp/include/rcpp/module/class.h),我认为目前不可能 我想到的最好的解决方法是在R中创建一个包装器来处理默认参数 下面是一个完整的示例,演示如何执行此操作。我定义了一个简单的函数,它接受3个参数并输出它们的和。第二个和第三个参数是可选的,默认设置为10和100 mwe.cpp 这将输出预期结

但是在我的情况下它不起作用。

我最近也有同样的问题。在查看了处理类的
rcpp
源文件之后(在我的设置中,
~/R/x86\u 64-pc-linux-gnu-library/3.2/rcpp/include/rcpp/module/class.h
),我认为目前不可能

我想到的最好的解决方法是在R中创建一个包装器来处理默认参数

下面是一个完整的示例,演示如何执行此操作。我定义了一个简单的函数,它接受3个参数并输出它们的和。第二个和第三个参数是可选的,默认设置为
10
100

mwe.cpp 这将输出预期结果:

> my_mwe$sum_them_wrapper(3, optional_arg2=500)
[1] 513
#include <Rcpp.h>

class  MWE {
public:
  int sum_them(int mandatory_arg,
               int optional_arg1,
               int optional_arg2)
  {
    return (mandatory_arg+optional_arg1+optional_arg2);
  }
};

RCPP_MODULE(mod_mwe) {
  Rcpp::class_<MWE>( "MWE" )
  .constructor()
  .method("sum_them", &MWE::sum_them)
  ;
}
require('Rcpp')

# source the C++ code
sourceCpp('mwe.cpp')

# create an instance of the class:
my_mwe = new(MWE)

# assign a wrapper with default arguments to the instance:
assign('sum_them_wrapper',
       function(mandatory_arg,
                optional_arg1=10,
                optional_arg2=100) {
         return(my_mwe$sum_them(mandatory_arg, optional_arg1, optional_arg2))
       },
       envir = my_mwe
       )
> my_mwe$sum_them_wrapper(3, optional_arg2=500)
[1] 513