【統計R】【Rcpp】RcppでC++の関数を実行しようとしたら”Error 1 occurred building shared library.”というエラーが出ました。

RでC++を実行できるRcppというパッケージを試してみました。
Rからパッケージ”Rcpp”とビルド用にRToolsをインストールして以下のスクリプトを書いて実行。

・RcppSample.R

library(Rcpp)
sourceCpp("Sample.cpp")
timesTwo(5)

・Sample.cpp

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
int timesTwo(int x) {
   return x * 2;
}

これをやると”Error 1 occurred building shared library.”というエラーが出ました。
いろいろ調べてみると、PATHが原因である可能性が高いようです。
そこで、以下のPATHを追加してみました。

・追加したPATH

C:\Program Files\R\R-3.1.3\bin\i386;
C:\Rtools\gcc-4.6.3\bin;
C:\Rtools\bin;

・PATHが反映されていることをRから確認

writeLines(strsplit(Sys.getenv("PATH"), ";")[[1L]])

しかし、これでもまだ”Error occurred building shared library.”というエラーがでます。
RToolsによるgccのバージョンは4.6.3のはずですが、Rから実行されているgccのバージョンを以下のコマンドで調べてみると、なぜか4.5.2となっていました。

system('g++ -v')

どうやらMinGWの下にあるgccを見に行ってしまっているようです。
PATHでは先に書いてあるファイルが優先されるので、上記のC:\Program Files\R\R-3.1.3\bin\i386;C:\Rtools\gcc-4.6.3\bin;C:\Rtools\bin;を一番最初に記述したらきちんとRTools以下のgccを見るようになって無事実行できました。

r_rcpp_error_1_occured_building_shared_library

※ 上記はWindow 7 32bitおよびR-3.1.3の環境で実行しました。

珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造

新品価格
¥3,672から
(2015/7/20 12:15時点)

珠玉のプログラミング 本質を見抜いたアルゴリズムとデータ構造

最近のプログラミングは納期・効率・書きやすさ・読みやすさみたいなところが重視されがちです。でもRcpp使ってデータ分析をしようなんて考えているのであればこの本に書いてあるようなことを一通りおさえておくとよい気がします。