This works great Dirk. Thanks!<div><br></div><div>-Kevin<br><br><div class="gmail_quote">On Thu, Jan 31, 2013 at 6:19 PM, Dirk Eddelbuettel <span dir="ltr"><<a href="mailto:edd@debian.org" target="_blank">edd@debian.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>
On 31 January 2013 at 17:41, Kevin Ushey wrote:<br>
| I was wondering - is there a way to translate between Vectors and Matrices? Eg,<br>
| reinterpreting a 100 length NumericVector as a 10x10 NumericMatrix by setting<br>
| the dimensions explicitly, or something of that form; preferably with a minimal<br>
| amount of copying.<br>
<br>
</div>I fear that just setting the dim argument won't be enough as we're strongly<br>
typed in C++.<br>
<div class="im"><br>
| Alternatively, is there a preferred method for constructing a  NumericMatrix<br>
| for output from a std::vector?<br>
<br>
</div>Yes, there are constructors that that rows, cols and a pointer to the<br>
contiguous memory.  That is what I would use.  There should be examples<br>
ploting.  But as a sketch:<br>
<br>
   Rcpp::NumericMatrix M(10, 10, X.begin() );<br>
<br>
Actually, as it is so cheap to test:<br>
<br>
-------------------------------------------------------------------------------<br>
#include <Rcpp.h><br>
<br>
// [[Rcpp::export]]<br>
Rcpp::NumericMatrix reshapePlusPlus(Rcpp::NumericVector X) {<br>
  return Rcpp::NumericMatrix(sqrt(X.length()), sqrt(X.length()), X.begin());<br>
}<br>
-------------------------------------------------------------------------------<br>
<br>
which pans out:<br>
<br>
R> sourceCpp("/tmp/kevin.cpp")<br>
R><br>
R> reshapePlusPlus(1:9)<br>
     [,1] [,2] [,3]<br>
[1,]    1    4    7<br>
[2,]    2    5    8<br>
[3,]    3    6    9<br>
R><br>
<div class="im"><br>
<br>
| The motivation is primarily for reshaping of R objects through Rcpp. I wasn't<br>
| able to find anything specific in the vignettes.<br>
<br>
</div>Not sure if this faster than just setting dim in R though....<br>
<span class="HOEnZb"><font color="#888888"><br>
Dirk<br>
<br>
--<br>
Dirk Eddelbuettel | <a href="mailto:edd@debian.org">edd@debian.org</a> | <a href="http://dirk.eddelbuettel.com" target="_blank">http://dirk.eddelbuettel.com</a><br>
</font></span></blockquote></div><br></div>