我一直在使用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实例。
谢谢你 - 埃贡
答案 0 :(得分:5)
是的,正如我之前写的那样rcpp-devel list(如果你关心Rcpp和RInside,你应该遵循)我刚刚在RInside添加了一个示例,将其嵌入Qt 。
我在main()
中实例化R,然后使用它将对该对象的引用传递给该类。这似乎是一个合适的模型,因为我们需要确保只运行一个R实例(R不是多线程等等 - 如果你需要更多实例,请考虑Rserve。
此示例为now in SVN,在我的框中显示如下:
我非常喜欢它,因为它可以让你玩混合物,扩展两个绘制等的中心位置,并查看你不再区分估计密度的两个驼峰的带宽。