R调用Cpp代码:全局变量未重新初始化

时间:2013-04-12 11:41:41

标签: c++ r global-variables

我正在编写一个R包,它一度调用Cpp程序。

我不是R和Cpp编程方面的专家,但我会尝试尽可能清楚地解释问题:

  • Cpp代码创建了一些全局变量,然后修改它(我知道它很糟糕......)。

  • 当我打开R并从我的包中运行一次R函数时,一切都很好。但是当我重新运行它时,似乎不会重新初始化由Cpp代码创建的全局变量,而是使用修改后的值。换句话说,似乎Cpp'创建的全局变量“保留在内存中”并且在我再次调用程序时不会重写。

我希望我的问题足够清楚,有人可以解释我为什么会这样做。 先感谢您。

1 个答案:

答案 0 :(得分:2)

事实上你确实解释得有点差,但实质上你需要理解

  • 函数调用只是暂时的,是否涉及来自R的C ++

  • 所以无论你设置什么之后都会消失,除非你说,返回一个值,或者......

  • 如果要维护“状态”,请创建一个合适的类,首先实例化它,然后使用该对象进行调用。 Rcpp可以帮助进行R / C ++接口。