2014年3月2日 星期日

RInside package-embed R in C++


在之前 Rcpp 文章中已說明利用 Rcpp 套件可在 R 程式中使用 C++ 語法,以加速 R 的執行. 本篇文章將說明如何利用 RInside 套件, 在C++程式中使用 R, 如此即可將程式編譯成執行檔.

操作環境: Windows 7 - 64位元, R-3.0.2, Rtools version 3.1.0, 參考以下執行步驟:
  1. 第一步驟當然是要安裝 R, 其安裝目錄不要使用預設值, 建議為 C:\R\R-3.0.2
  2. 安裝 Rtools 工具, 直接安裝於預設目錄即可 C:\Rtools
  3. 在R程式中安裝 RInside 套件 install.packages("RInside")
  4. 檢視 RInside 套件中內建範例, 例如: rinside_sample3.cpp, 該範例有使用 lm 函數:
    lm(Fertility ~ . , data = swiss)
  5. 命令提視字元視窗
  • 環境設定內容:
    SET PATH=C:\R\R-3.0.2\bin\x64;C:\Rtools\bin;C:\Rtools\gcc-4.6.3\bin;%PATH%
    SET R_HOME=C:\R\R-3.0.2
    SET PKG_LIBS='Rscript -e "Rcpp:::LdFlags()"'
    SET PKG_CPPFLAGS='Rscript -e "Rcpp:::CxxFlags()"'
  • 編譯程式
    make -f Makefile.win rinside_sample3
圖1: 設定環境與編譯程式
    • 執行結果
      rinside_sample3
    圖2: 顯示結果
    註: 目前僅使用 Dev-C++ 4.9.9.2 測試, Microsoft Visual Studio, Qt library 將再增加...