<div dir="ltr">Thanks Hadley, much more concise :)<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 24, 2015 at 2:22 PM, Hadley Wickham <span dir="ltr"><<a href="mailto:h.wickham@gmail.com" target="_blank">h.wickham@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, Jun 24, 2015 at 11:08 AM, Charles Determan<br>
<<a href="mailto:cdetermanjr@gmail.com">cdetermanjr@gmail.com</a>> wrote:<br>
> Many thanks Krzysztof, your suggestion works.  I can explicitly create a<br>
> 'new' arma::mat object and pass the resulting XPtr between functions.  I<br>
> will work on making everything prettier and document for a submission to<br>
> Rcpp Gallery unless someone is aware of one that already exists that I<br>
> somehow overlooked.<br>
><br>
> // [[Rcpp::export]]<br>
> SEXP testXptr(NumericMatrix A)<br>
> {<br>
>     arma::mat *armaMat = new arma::mat(A.begin(),A.rows(), A.cols(), false);<br>
>     XPtr<arma::mat> pMat(armaMat);<br>
>     return(pMat);<br>
> }<br>
><br>
> // [[Rcpp::export]]<br>
> void testReturn(SEXP ptrA, int nr, int nc)<br>
> {<br>
>     XPtr<arma::mat> ptrB(ptrA);<br>
>     arma::mat B = arma::mat( (double *) ptrB->memptr(),<br>
>           nr,<br>
>           nc,<br>
>           false);<br>
>     B.print("copied matrix");<br>
> }<br>
<br>
</span>You can make this a little nicer:<br>
<br>
// [[Rcpp::export]]<br>
void testReturn(XPtr<arma::mat> ptrA, int nr, int nc)<br>
{<br>
    arma::mat B = arma::mat( (double *) ptrA->memptr(),<br>
<div class="HOEnZb"><div class="h5">          nr,<br>
          nc,<br>
          false);<br>
    B.print("copied matrix");<br>
}<br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">Hadley<br>
<br>
--<br>
<a href="http://had.co.nz/" rel="noreferrer" target="_blank">http://had.co.nz/</a><br>
</font></span></blockquote></div><br></div>