目前我正在通过以下方式从C ++调用R脚本:
system("PATH C:\\Program Files\\R\\R-3.0.1\\bin\\x64");
system("RScript CommandTest.R");
CommandTest.R是我的脚本。
这很有效,但速度很慢,因为我需要一个特定的包,这个方法会在每次调用时加载包。
有没有办法加载一次包,然后保持Rscript的实例打开,以便我可以继续调用它而不必每次都重新加载包?
PS:我知道'更好'的方法可能与Rcpp / Rinside一起使用,如果有必要,我会沿着那条路走下去,但我认为有必要问一下,如果我有一个简单的方法可以做到这一点没有它需要。答案 0 :(得分:1)
似乎Rserve包是您所寻求的。基本上它会打开一个“服务器”,可以要求它来评估表达式。
它有Java,C ++和一个R会话与另一个R会话之间的通信选项。
在documentation中,您可能需要查看run.Rserve
和self.ctrlEval
答案 1 :(得分:0)
我不知道保持R永久打开的解决方案,但您可以通过使用--vanilla
选项调用R来加快启动速度。 (有关更多选项,请参阅R的简介附录B.1。)
您还可以尝试使用::
访问这些功能以保存完全加载包。 (尝试进行分析,看看这是否真的为您节省了很多时间。包加载实际上是分析的缓慢部分吗?)