使 Rscript 的实例保持打开状态

Keep instance of Rscript open?

本文关键字:状态 Rscript 实例      更新时间:2023-10-16

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

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

其中 CommandTest.R 是我的脚本。

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

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

PS:我知道"更好"的方法可能是使用 Rcpp/Rinside,如有必要,我会沿着这条路走下去,但我认为值得问一下是否有一种简单的方法可以在没有它的情况下完成我需要的事情。

似乎 Rserve 包就是您想要的。基本上,它保持打开一个"服务器",可以要求它计算表达式。

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

在文档中,您可能需要查看run.Rserveself.ctrlEval

我不知道保持 R

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

您也可以尝试使用 :: 访问函数以节省完全加载包的时间。 (尝试分析,看看这是否真的可以节省大量时间。 包加载实际上是分析中缓慢的部分吗?