我正在编写一个R包,它一度调用Cpp程序。
我不是R和Cpp编程方面的专家,但我会尝试尽可能清楚地解释问题:
Cpp代码创建了一些全局变量,然后修改它(我知道它很糟糕......)。
当我打开R并从我的包中运行一次R函数时,一切都很好。但是当我重新运行它时,似乎不会重新初始化由Cpp代码创建的全局变量,而是使用修改后的值。换句话说,似乎Cpp'创建的全局变量“保留在内存中”并且在我再次调用程序时不会重写。
我希望我的问题足够清楚,有人可以解释我为什么会这样做。 先感谢您。
答案 0 :(得分:2)
事实上你确实解释得有点差,但实质上你需要理解
函数调用只是暂时的,是否涉及来自R的C ++
所以无论你设置什么之后都会消失,除非你说,返回一个值,或者......
如果要维护“状态”,请创建一个合适的类,首先实例化它,然后使用该对象进行调用。 Rcpp可以帮助进行R / C ++接口。