我一直在使用 Rcpp 和 RInside 来集成 R 和 C++。我们有一个复杂但设计良好的 C++ 体系结构,我发现很难仅从 1 个函数访问 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 实例。
谢谢 - 亿康
最佳答案
是的,正如我之前写给 rcpp-devel list 的(如果你关心 Rcpp 和 RInside,你应该遵循)我刚刚添加了一个例子到 RInside将它嵌入 Qt .
我在 main()
中实例化 R,然后将对此对象的引用传递给使用它的类。这似乎是一个合适的模型,因为我们需要确保只有一个 R 实例在运行(R 不是多线程等——如果您需要更多实例,请考虑 Rserve。
这个例子是now in SVN在我的盒子上看起来像这样:
我非常喜欢它,因为它可以让你玩弄混合,分散两个绘图的中心位置等,并查看在哪个带宽下你不再区分估计密度的两个驼峰。
关于oop - 将 RInside 的 'R' 实例作为类/方法之间的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5357765/