1 min read

Rcpp Tutorial Chapter 2

設定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之中了!