将RInside的'R'实例作为类/方法之间的参数传递

Ego*_*gon 3 oop r rcpp rinside

我一直在使用Rcpp和RInside来集成RC++.我们有一个复杂但设计良好的C++架构,我发现很难从一个函数中访问R.是否可以将R 实例传递给不同的类/函数,以获得更多的OOP设计?如果是,有什么例子吗?

为了详细说明查询,我想说这样的话,

void foo(RInside& R0, int& x0)
{
 R0.assign(x0,"totalSum");
}
void foo2(RInside& R0, int& y0)
{
  R0.assign(y0,"temp");
   R0.parseEvalQ("totalSum = totalSum + temp"); 
 }
int main(int argc, char *argv[])
{   
  RInside R(int argc, char *argv[]);
  int x=10, y = 11;
  foo(R,x);
  foo2(R,y);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我目前注意到的是每次调用foo,都可能会创建一个新的RInside实例.

谢谢 - 埃贡

Dir*_*tel 5

是的,正如我之前写的rcpp-devel列表(如果你关心Rcpp和RInside,你应该遵循它)我刚刚向RInside添加了一个示例,它将它嵌入到Qt中.

我实例化R in main()然后使用它将对该对象的引用传递给类.这似乎是一个合适的模型,因为我们需要确保只运行一个R实例(R不是多线程等等 - 如果你需要更多实例,请考虑Rserve.

此示例现在在SVN中,在我的框中看起来像这样:

在此输入图像描述

我非常喜欢它,因为它可以让你玩混合物,扩展两个绘制等的中心位置,并查看你不再区分估计密度的两个驼峰的带宽.