これは簡単な質問ですが、私はCppを初めて使っています。同じcppファイル内に2つのrcpp関数があります
私はRcppを使用して、Rで関数を作成しました:
// [[Rcpp::export]]
私はRで関数を呼び出すことができますし、意図した通りに動作します。それをF1()
としましょう。
次に、最初の関数を呼び出す同じファイルcppに別の関数F2()
を作成します。標準の関数呼び出し言語(すなわち、F1(arguments)
)を使用し、sourceCpp()
を使用すると、Rを通じて正常にコンパイルされます。私はRでF2()
を呼び出すしようとする。しかし、私が手:evalの中
エラー(exprの、ENVIR、enclos):機能 "F2" を見つけることができませんでした
任意のアドバイスはありますか?
ありがとうございました。あなたが輸出のコメント// [[Rcpp ::輸出]]を提供する必要があり、各機能については
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector F1(NumericVector x) {
return x * 2;
}
NumericVector F2(NumericVector x) {
return x *F1(x);
}
// even if i put return x*x*x instead of x*F1(X), I got the same error
/*** R
F1(42)
F2(51)
*/
エクスポートする関数ごとにエクスポート宣言が必要です。 verbose = TRUEを指定してsourceCppを呼び出すと、生成されるコードを正確に見ることができます。 – nrussell
これも重複した質問です... –