使 Rscript 的实例保持打开状态
Keep instance of Rscript open?
目前我通过以下方式从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.Rserve
和self.ctrlEval
我不知道保持 R
永久打开的解决方案,但您可以通过使用 --vanilla
选项调用 R 来加快启动速度。 (有关更多选项,请参阅 R 简介的附录 B.1。
您也可以尝试使用 ::
访问函数以节省完全加载包的时间。 (尝试分析,看看这是否真的可以节省大量时间。 包加载实际上是分析中缓慢的部分吗?
相关文章:
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- std::future_error:无关联状态
- 如何避免LED在循环状态变化中闪烁?
- boost 是否有按特殊类型值编码状态"compact optional"?
- 为什么系统函数总是在C++中返回已转移的退出状态?
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 当可输入框在窗口中处于活动状态时获得通知的任何方法
- 检查两个节点在子节点上是否具有相同状态的更优雅的方法
- 将有状态的 lambda 传递到 C 样式函数中,而无需上下文参数
- 在 nullptr 上调用无状态类的非静态成员函数是否合法?
- 编译问题:在函数"_start"中:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- C++部分概念 id:显式模板规范顺序/第一个参数的特殊状态的原因是什么?
- 试图在崇高中奔跑. 错误 已发生: 收集2.exe: 错误: ld 返回 1 退出状态
- 在容器上移动分配:以前包含的对象的状态
- collect2:错误:ld 返回 1 个退出状态未定义的引用
- 具有动态大小的特征矩阵的默认初始状态
- 如何从Clojure调用C++程序,以使程序保持打开状态?
- 使 Rscript 的实例保持打开状态