最近因为项目要用到,所以在想办法把R语言用到C++中. 网上查了看到有一个Rcpp的工具.所以在这里总结一下.
现在能想到的几种在C++中调用R语言的方法如下:
1. 使用Rcpp
- R高级编程技巧及Rcpp的介绍
- Rcpp的前世今生
- Rcpp快速入门
- Rcpp简明入门
- Exposing C++ functions and classes with Rcpp modules
- Rcpp: Seamless R and C++ Integration
- Rcpp
- CRAN usage
- Writing R Extensions
2. 在C++中直接执行R脚本函数
- 用system()
-
1. 管道
2. fork/spawn + exec
3. CreateProcess
4 system - 直接调用R语言解释器
3. 使用文件交换----即C++输出参数等到一个文档,然后R脚本调用计算后再输出到文档,让C++程序读取
这里面大概存在着时间控制,循环读取,还有R脚本何时执行的问题....
以及最后项目是要做一个软件出来, 那么使用文档存储和R调用没有问题吗?
-
不要做A语言代码修改为B语言代码的无用功。
也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。
只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。
即可很方便地让A、B两种语言之间协调工作。
比如:
A将请求数据写到文件a.txt,写完后改名为aa.txt
B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt
A发现bb.txt存在时,读取其内容,读完后删除bb.txt
以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。
除非A或B不支持判断文件是否存在、文件读写和文件更名。
但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? - 【C/C++】Linux下使用system()函数一定要谨慎
4. R脚本编译成动态/静态链接,然后嵌入c++中
时间: 2024-12-27 08:47:39