Rで作成した行列をメモリに格納してポインタを返すことができるようにしたいと考えています。そして、後でポインタを使用して、メモリから行列を取り戻します。私はRバージョン3.0.1(2013-05-16)を実行しています - Ubuntu 13.01とRcppバージョン "0.10.6"で "Good Sport"私が試してみました...xptrを使ってメモリに行列を格納して検索する
// [[Rcpp::export]]
SEXP writeMemObject(NumericMatrix mat)
{
XPtr<NumericMatrix> ptr(&mat, true);
return ptr;
}
// [[Rcpp::export]]
NumericMatrix getMemObject(SEXP ptr)
{
XPtr<NumericMatrix> out(ptr);
return wrap(out);
}
# This returns a pointer
x <- writeMemObject(matrix(1.0))
しかし、私はあなたがXPtr
にフィードポインタがここにwriteMemObject
にローカルな変数のアドレスで再び
getMemObject(x)
Error: not compatible with REALSXP
これはあなたの質問に答えませんが、あなたは 'bigmemory'パッケージをチェックアウトしましたか?これは、あなたが記述していることをする 'big.matrix'オブジェクトを持っています。 –
それはXPtrを使用しています - Rcppギャラリーで有用な記事を参照してください。 –