3

我一直在使用 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;
}

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

谢谢 - 埃贡

4

1 回答 1

5

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

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

这个例子现在在 SVN 中,在我的盒子上看起来像这样:

在此处输入图像描述

我非常喜欢它,因为它可以让您玩弄混合,分散两个抽签的中心位置等,并查看您不再区分估计密度的两个驼峰的带宽。

于 2011-03-18T21:29:08.060 回答