Ich möchte in der Lage sein, eine in R erstellte Matrix im Speicher zu speichern und den Zeiger zurückgeben. Und dann später den Zeiger verwenden, um die Matrix aus dem Speicher zurückzuholen. Ich benutze R Version 3.0.1 (2013-05-16) - "Good Sport" auf Ubuntu 13.01 und Rcpp Version "0.10.6". Ich habe ... versuchtSpeichern und Abrufen von Matrizen im Speicher mit 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))
Aber dies nicht gelingt und stürzt R, wenn ich wieder versuchen
getMemObject(x)
Error: not compatible with REALSXP
Dies beantwortet Ihre Frage nicht, aber haben Sie das Paket "bigmemory" ausgecheckt? Es hat ein "big.matrix" -Objekt, das das tut, was du beschreibst. –
Und es verwendet XPtr - siehe die nützliche write-up in der Rcpp Gallery. –