我希望能够在R中将一个矩阵存储到内存中并返回指针,然后稍后再使用该指针从内存中获取矩阵。我的R版本是3.0.1(2013-05-16)——“Good Sport”,Ubuntu 13.01和Rcpp版本为“0.10.6”。我尝试过......
// [[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
对象可以实现你所描述的功能。 - Scott Ritchie