Rcpp模块的通用方法

时间:2013-07-19 18:02:09

标签: module rcpp

在使用Rcpp模块公开的类上定义泛型方法的适当位置是什么?更具体地说,假设以下源文件是Rcpp包的一部分。我想将+运算符与玩具类'Double'一起使用:

#include <Rcpp.h>

class Double {
public:
  Double(double d);
  double get() const;
private:
  ...
};

RCPP_MODULE(my_module) {
  using namespace Rcpp;
  class_<Double>("my.double")
    .constructor<double>()
    .property("value", &Double::get);
}

以下R代码似乎可以提供所需的结果:

.onLoad <- function(libname, pkgname) {
  loadRcppModules()
}

.onAttach <- function(libname, pkgname) {
  setMethod("+", signature(e1=my.double, e2=my.double), function(e1, e2) {
    new(my.double, e1$value + e2$value)
  }, where=.GlobalEnv)
}

但是,我有兴趣学习解决这个问题的正确方法。

1 个答案:

答案 0 :(得分:2)

我在RcppBDT包中正是这样做的。我也发现它很乏味 - 对于许多类型,许多操作都会重复快速 - 但不知道更好的方法。