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

时间:2011-03-18 20:58:56

标签: oop r rcpp rinside

我一直在使用Rcpp和RInside来整合 R C ++ 。我们有一个复杂但设计良好的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;
}

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

谢谢你 - 埃贡

1 个答案:

答案 0 :(得分:5)

是的,正如我之前写的那样rcpp-devel list(如果你关心Rcpp和RInside,你应该遵循)我刚刚在RInside添加了一个示例,将其嵌入Qt

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

此示例为now in SVN,在我的框中显示如下:

enter image description here

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