2016-06-24 13 views
-3

これは、sourceCppからRcpp Moving from sourceCpp to a package w/Rcppのパッケージへの移動に関するポストに関連しています。しかし、私はMac OS X 10.10.4でRcppArmadilloを使用しており、パッケージを動作させるのに問題がありました。次のようにsourceCppで動作するファイルは次のとおりです。Rcppが機能しなかったのw /プロジェクト>パッケージを作成>プロジェクトを使用して新しいプロジェクトを作成するために、R Studioを使用しようとするとソースCppからRcppArmadilloを使用したパッケージに移動

#include <RcppArmadillo.h> 
// [[Rcpp::depends(RcppArmadillo)]] 

using namespace Rcpp; 

// [[Rcpp::export]] 
arma::mat cholcalcCpp(arma::mat& SS, arma::umat& Aadj){ 

    int p = SS.n_rows; 
    arma::mat L(p,p); 
    arma::mat D(p,p); 

    L = arma::eye(p,p); 
    D = arma::eye(p,p); 

    return (L*sqrt(D)); 
} 

どちらか私はというエラーを取得保管するのでコマンドarmaは認識されませんでした。私は#include <RcppArmadillo.h>をRccpExports.cppファイルに追加しようとしましたが、Rstudioはビルドとリロードを行うたびにその行を削除します。誰でも.cppファイルからRccpArmadilloパッケージに移動する方法を提案できますか?ありがとう。

+1

'DESCRIPTION'ファイルに' LinkingTo:Rcpp、RcppArmadillo'がありますか? – nrussell

+2

'RcppArmadillo.package.skeleton()'からも始めることができます。 –

+0

@Coatlessと@Dirkに感謝します。私はそれをビルドしてロードすることができましたが、Rから関数を呼び出そうとすると次のエラーが発生します: '.Primitive(" Call ")のエラー(、S、adj ): シンボルアドレスとしてNULL値が渡されました。これを引き起こす原因は何ですか? –

答えて

1

間違っていることがいくつかあります。主に、を含むようにDESCRIPTIONファイルを変更し、/srcディレクトリ内の各.cppファイルに#include <RcppArmadillo.h>が存在することを確認する必要があります。 2つのMakevarsファイルも含める必要があります。

Makevars.winMakevars

PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) 

パッケージとしてRcppArmadilloを使用するようにRStudioを設定するための完全なウォークスルーについては参照してください。

http://thecoatlessprofessor.com/programming/setting-up-rstudio-to-work-with-rcpparmadillo/

1

をエラーは、この中で基本的にあなた次第です。

RSを使用しようとしています。プロジェクトを使用して新しいプロジェクトを作成するにはtudio>プロジェクト>パッケージを作成しますRcppはどちらか動作しませんでした/ wの

誰も「Rcppとパッケージ」「RcppArmadilloとパッケージ」と同じであったことを言いませんでした。あなたは単にRStudioがあなたに何を提供しているのか誤解しています。

RcppArmadilloは、CRANの200を超えるパッケージで使用されています。ときには、それらのうちの1つをコピーし、それを取り除き、そのようにして作成されたフレームワークから開始するのが一番簡単です。もちろん、も簡単に文書化されていますRcppArmadilllo.package.skeleton()関数を使用してくださいは正確にこのユースケースを書いています:RcppArmadilloの基本的な(作業中の)パッケージを作成しています。

関連する問題