关于在C++中调用R函数以及RCpp使用

最近因为项目要用到,所以在想办法把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
  • RInside:
    • 居然在这里看到了Qt!!!好激动!!:  

      R inside Qt: A simple RInside application

    • C++与R交互
    • 使用rinside用qt在windows

       

2. 在C++中直接执行R脚本函数

  • 用system()
  • /1. 管道
    2. fork/spawn + exec
    3. CreateProcess
    4 system
  • 直接调用R语言解释器   
    Rscript *.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++中

  • Embedding R in Other Applications

     

你可能感兴趣的