最近由於項目要用到,因此在想辦法把R語言用到C++中. 網上查了看到有一個Rcpp的工具.因此在這裏總結一下.html
如今能想到的幾種在C++中調用R語言的方法以下:c++
1. 使用Rcpp編程
Rcpp的前世此生app
Rcpp簡明入門ide
2. 在C++中直接執行R腳本函數url
1. 管道
2. fork/spawn + exec
3. CreateProcess
4 system
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不支持判斷文件是否存在、文件讀寫和文件改名。
可是誰又能舉出不支持判斷文件是否存在、文件讀寫和文件改名的開發語言或開發環境呢?
4. R腳本編譯成動態/靜態連接,而後嵌入c++中