2016-11-07 3 views
0

rcppを使ってrで簡単な関数をコーディングしようとしています。私はhttp://adv-r.had.co.nz/Rcpp.htmlて構文を考え出すと砂糖の機能を使用しますが、作業に以下を得ることができなかったよ。rcppを使った行列から行列への単純な関数

cppFunction('NumericMatrix fun(NumericMatrix x) { 
    NumericMatrix dd = (exp(-(pow(x, 2))/2)*(3 - 6*pow(x, 2) + pow(x,4)))/sqrt(2*PI); 
    return dd; 
}') 

基本的に行列の各要素に関数を適用します。どうすればそれを動作させることができますか?

+2

これは[RcppのFAQ] 3.5によって覆われている(http://dirk.eddelbuettel.com/code/rcpp/Rcpp-FAQ.pdf) – dww

答えて

2

残念ながら、行列乗算はRcpp NumericMatrixではまだサポートされていません。 1つの選択肢はArmadilloからRcppArmadilloまでです。

# install.packages("RcppArmadillo") 
Rcpp::cppFunction('arma::mat fun(const arma::mat& x) { 
    arma::mat dd = (exp(-(pow(x, 2))/2)%(3 - 6*pow(x, 2) + pow(x,4)))/sqrt(2*PI); 
    return dd; 
}', depends = "RcppArmadillo") 

%は要素毎の乗算

+0

返信いただきありがとうございます。私はしかし、コードを使用してエラーが発生しました:ld:警告:ディレクトリ '-L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2'のディレクトリに見つかりませんでした。 ld: lgfortran clang:エラー:終了コード1でリンカーコマンドが失敗しました(呼び出しを見るために-vを使用) make:*** [sourceCpp_3.so]エラー1 –

+0

http://thecoatlessprofessor.com/programming/rcpp-rcpparmadillo-and -os-x-mavericks-lgfortran-and-lquadmath-error/ – coatless

+0

パーフェクト!ありがとう! –

関連する問題