私は、この関数(またはそれを返すだけでString)を使用したい:私のR(CPP)のパッケージにはRにC++の関数(または変数)が利用できるようにするとRcpp機能が
const char* ERROR_TYPE() {
return "unknown type detected for big.matrix object!";
}
を。
すべてのRcpp関数(src /のファイル)とすべてのテスト(test/testthat /のRファイル)で使用できるようにします。
throw Rcpp::exception(MESSAGE);
とtestthat::expect_error(foo(), MESSAGE)
ここで、メッセージはと定義されています。
私はRcpp Attributesで言われていることのいくつかを読んでテストしようとしましたが、それは私の問題では機能していないようです。
私が試した最初のものは、
// [[Rcpp::export]]
const char* ERROR_TYPE() {
return "unknown type detected for big.matrix object!";
}
を定義することですが、それは他のRcppファイルにスコープしません。 次に、#include "myfile.cpp"
他のRcppファイルで試しましたが、inline
または#ifndef #define #endif
を使用しようとしていても複数の定義がありましたが、C++ファイルでは奇妙だと思います。 最後に、私はinst/include/mypackage.h
を使用しようとしましたが、そこに自分の関数や変数を定義しましたが、他のC++関数のスコープにもならなかったようです。
1つのトリック、仕事
ERROR_TYPE <- function() {
"unknown type detected for big.matrix object!"
}
Rの関数を定義してからRcpp機能に
Function err("ERROR_TYPE");
throw Rcpp::exception(as<const char*>(err()));
を使用しているようです。 しかし、良い練習ではないようです。 そして、devtools::test()
では動作しますが、devtools::check()
やTravis-CIでは機能しませんので、解決策ではありません。
あなたはこれまでに正確に何を試しましたか? [RcppExamples](https://cloud.r-project.org/web/packages/RcppExamples/index.html)パッケージとそのソースコードをGitHubで見てきましたか? –
私の投稿を編集して、その下に行を追加しました。 –
[Rcpp内の別のcppファイルで定義された関数で、あるcppファイルで定義された関数を使用する]の可能な複製(https://stackoverflow.com/questions/44892388/use-function-defined-in-one-cpp-file-in) -function-defined-in-another-cpp-file-in) – coatless