Rcpp 是一個可以讓 R 透過 C++ 語言提升執行效能的套件,其使用方式簡單、上手容易,且對於耗時的運算相當有幫助,是一個很實用的套件。

由於 R 屬於高階語言,相較於 C/C++ 這類的低階語言,R 程式的執行速度比較慢,對於較為耗時的運算(例如蒙地卡羅類型的模擬)來說,若只使用單純的 R 語言來處理,時常會遇到計算時間過長的問題。

傳統上運算速度的問題可以使用 R 本身所提供的 C 或 Fortran 語言介面,將程式中耗時的部分以 C 或 Fortran 改寫,然而 R 本身的低階語言介面相當複雜,對於一般人而言不容易使用,通常只有 R 的套件開發者有能力使用這樣的功能。

Rcpp 是後來發展出來的一個套件,它在 R 中提供了一個非常簡單又好用的 C++ 語言介面,讓一般的使用者可以很輕鬆的結合 R 與 C++ 程式,降低程式開發的技術門檻,大幅提高 R 程式的執行速度,近年來 Rcpp 已經成為 R 高效能運算領域非常重要的套件之一。

適合使用 C++ 的問題

C++ 語言雖然執行效率比 R 語言更好,不過並不是每一種問題都適合使用 C++ 來處理,以下是幾種非常適合使用 C++ 來處理的典型問題類型:

  • 無法轉換成向量化的迴圈運算,例如每次迭代都會跟前一次迭代的運算結果有關的迴圈。
  • 遞迴呼叫的函數或是需要大量重複執行的函數,因為在 C++ 中的函數呼叫會比 R 中的函數呼叫更有效率,所以這種狀況也適合以 C++ 改寫。
  • 需要使用 R 所沒有支援的複雜資料結構時,也可以使用 C++ 與其標準函式庫(STL)來實做。

安裝

由於 Rcpp 套件在使用時會需要編譯 C++ 的程式碼,所以除了安裝 R 的 Rcpp 套件之外,還要再安裝系統上的 C++ 編譯器才能正常使用。

安裝 Rtools 工具集

由於在 Windows 系統上通常並不會有安裝 C++ 編譯器,若要使用 Rcpp 套件,必須先安裝 Rtools 這個官方的工具集,而若是在 Linux 系統上的話,請安裝一般的 gcc/g++ 編譯器。

Rtools 工具集裡面包含了編譯 R 套件所需要的各種工具,而我們需要的就是其中的 gcc/g++ 編譯器。

Step 1
請從官方的 CRAN 網站上下載 Rtools 安裝檔。

r-install-rtools-1

Step 2
下載時請選擇適合自己 R 版本的 Rtools 安裝檔。

r-install-rtools-2

Step 3
下載下來之後,直接執行,進行安裝。首先選擇安裝用語言,選擇 English 即可,按下「OK」。

r-install-rtools-3

Step 4
這是 Rtools 工具集的說明資訊,其中最主要的就是 Cygwin 的仿 Linux 環境,請點選「Next」繼續。

r-install-rtools-4

Step 5
選擇安裝路徑,點選「Next」繼續。

r-install-rtools-5

Step 6
選擇安裝組件,使用預設值即可,點選「Next」繼續。

r-install-rtools-6

Step 7
其他設定,使用預設值即可,點選「Next」繼續。

r-install-rtools-7

Step 8
檢查安裝設定,確認無誤後,點選「Install」進行安裝。

r-install-rtools-8

Step 9
等待安裝過程。

r-install-rtools-9

Step 10
安裝完成,點選「Finish」結束。

r-install-rtools-10

安裝 Rcpp 套件

R 官方的套件庫就有收錄 Rcpp 套件,直接以 install.packages 安裝即可:

install.packages("Rcpp")

安裝完成後,即可載入使用:

library(Rcpp)