我希望能夠將在R中創建的矩陣存儲在內存中並返回指針。然後使用指針從內存中取回矩陣。我在Ubuntu 13.01和Rcpp版本「0.10.6」上運行R版本3.0.1(2013-05-16) - 「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))
但這種失敗和崩潰R'當我再試試
getMemObject(x)
Error: not compatible with REALSXP
這不能回答你的問題,但你檢查了'bigmemory'包嗎?它有一個'big.matrix'對象,可以完成你所描述的內容。 –
它使用XPtr - 請參閱Rcpp Gallery上的有用寫法。 –