保持Rscript的实例打开?

时间:2014-02-25 09:00:35

标签: c++ r

目前我正在通过以下方式从C ++调用R脚本:

system("PATH C:\\Program Files\\R\\R-3.0.1\\bin\\x64");
system("RScript CommandTest.R");

CommandTest.R是我的脚本。

这很有效,但速度很慢,因为我需要一个特定的包,这个方法会在每次调用时加载包。

有没有办法加载一次包,然后保持Rscript的实例打开,以便我可以继续调用它而不必每次都重新加载包?

PS:我知道'更好'的方法可能与Rcpp / Rinside一起使用,如果有必要,我会沿着那条路走下去,但我认为有必要问一下,如果我有一个简单的方法可以做到这一点没有它需要。

2 个答案:

答案 0 :(得分:1)

似乎Rserve包是您所寻求的。基本上它会打开一个“服务器”,可以要求它来评估表达式。

它有Java,C ++和一个R会话与另一个R会话之间的通信选项。

documentation中,您可能需要查看run.Rserveself.ctrlEval

答案 1 :(得分:0)

我不知道保持R永久打开的解决方案,但您可以通过使用--vanilla选项调用R来加快启动速度。 (有关更多选项,请参阅R的简介附录B.1。)

您还可以尝试使用::访问这些功能以保存完全加载包。 (尝试进行分析,看看这是否真的为您节省了很多时间。包加载实际上是分析的缓慢部分吗?)