設定Rcpp開發環境
為了能先讓讀者動手嘗試,這裡我先介紹一種最簡單的使用Rcpp的方法:
安裝Rcpp
- 在Windows的讀者請先安裝
Rtools
。 - 接著在R底下安裝Rcpp套件。本系列撰寫時的Rcpp 是0.10.4版本。
使用inline
嵌入Rcpp
如果我們只是單獨使用Rcpp的函式庫,那最簡單的方式就是使用inline套件。透過CRAN,讀者應該可以輕鬆安裝。 本系列主要在介紹Rcpp,所以讀者應該能透過inline來執行Rcpp code。
接著我們來測試看看能不能正常使用Rcpp:
library(Rcpp)
library(inline)
f <- cxxfunction(sig=c(), plugin="Rcpp", body='
Rcout << "Hello World!" << std::endl;
')
f()
如果設定正常的話,就可以在R console上看到:
> f()
Hello World!
NULL
真是非常簡單!
ps. 這裡我假設讀者並沒有更改R的安裝路徑。如果不是裝在預設路徑,那可能還需要額外的設定了。
使用Rcpp Attribute
這是Rcpp 0.10版本所推出的功能。
讀者可以單獨的撰寫一個.cpp檔案,並透過適當的註解之後,將函數嵌入R 之中。
舉例來說,我們可以寫一個test.cpp
:
#include<Rcpp.h>
using namespace Rcpp;
//[[Rcpp::export]]
SEXP hello_world() {
BEGIN_RCPP
Rcout << "hello world" << std::endl;
END_RCPP
}
存檔之後,在同一目錄下打開R並執行:
library(Rcpp)
sourceCpp("test.cpp")
hello_world()
讀者應該可以看到R console上跑出:
> hello_world()
hello world
NULL
這是透過函數名稱前的C++註解所達到的效果。 只要加入:
//[[Rcpp::export]]
在sourceCpp
之後就可以輕鬆的將同名函數匯出到R之中了!