<div dir="ltr"><div><div><div>Hi Dirk,<br><br></div>I take your point. Given that the conversion is essentially free, temporary conversion makes the most sense. <br><br></div>Thank you again!<br></div>Jon<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 12, 2016 at 2:36 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"><br>
Hi Jon,<br>
<span class=""><br>
On 12 October 2016 at 14:20, Jonathan Fintzi wrote:<br>
| Thanks for the quick response. In the broader project, the vector being copied<br>
| from is an Rcpp::NumericVector that contatenates vectorized versions of a<br>
| number of other objects that are integrated numerically using the boost odeint<br>
| solvers. I couldn't quite get the numerical integrators to play nice with<br>
| Armadillo objects, and in using std::copy I was trying to avoid converting the<br>
| vector 'v' to an arma::vec since I would have to convert it back for further<br>
| integration. Perhaps this was a mistake?<br>
<br>
</span>Yes -- the transformation in as essentially costless.  We have some<br>
benchmarking that show that.<br>
<span class=""><br>
| Still, I don't quite understand why armadillo row pointers don't work which<br>
| armadillo column pointers are fine.<br>
<br>
</span>Now you phrase your question as "arma-only" (which makes sense) but that<br>
is not what your code does, is it?<br>
<br>
I see that you are having an issue mixing things. So I suggest an easy<br>
simplification. You are of course free to ignore that -- but you may then<br>
have to provide another layer as the compiler so far appears to be unhappy.<br>
<span class="HOEnZb"><font color="#888888"><br>
Dirk<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
| Thanks,<br>
| Jon<br>
|<br>
| On Wed, Oct 12, 2016 at 2:10 PM, Dirk Eddelbuettel <<a href="mailto:edd@debian.org">edd@debian.org</a>> wrote:<br>
|<br>
|<br>
|     On 12 October 2016 at 13:43, Jonathan Fintzi wrote:<br>
|     | Hello,<br>
|     |<br>
|     | I am trying to use the std::copy() function to copy elements from an<br>
|     | Rcpp::NumericVector into rows of armadillo matrices. A simplified version<br>
|     of my<br>
|     | code is as follows:<br>
|     |<br>
|     | cppFunction('void copyinto(Rcpp::NumericVector& v, arma::mat& d1,<br>
|     arma::mat&<br>
|     | d2) {<br>
|     |         std::copy(v.begin(), v.begin() + 3, d1.begin_row(0));<br>
|     |         std::copy(v.begin() + 3, v.end(), d2.begin_row(0));<br>
|     | }', depends = "RcppArmadillo")<br>
|<br>
|     You should not need to mix an _Rcpp_ vector with an _Armadillo_ matrix<br>
|     using<br>
|     std::copy.  Check the decent Armadillo docs -- all the subsetting and<br>
|     slicing<br>
|     can be done with Armadillo.  And that is what I would do.<br>
|<br>
|     But maybe I didn't quite understand what you are really after.<br>
|<br>
|     Dirk<br>
|<br>
|     | v <- runif(6)<br>
|     | d1 <- matrix(0.0, 3,3)<br>
|     | d2 <- matrix(0.0, 3,3)<br>
|     |<br>
|     | copyinto(v, d1, d2)<br>
|     |<br>
|     | However, when I attempt to compile the code, I receive a list of<br>
|     compilation<br>
|     | errors including "no type named 'XXXXXX' in 'class arma::Mat<double><br>
|     | row_iterator", where XXXXXX is iterator_category, value_type,<br>
|     difference_type,<br>
|     | pointer, and reference.<br>
|     |<br>
|     | If I change the iterators to column iterators (e.g. d1.begin_col(0))<br>
|     everything<br>
|     | compiles and works just fine. I feel that I must be missing something<br>
|     quite<br>
|     | basic here, but in searching around I haven't been able to identify my<br>
|     mistake.<br>
|     |<br>
|     | Thank you for your help!<br>
|     | Jon<br>
|     | ______________________________<wbr>_________________<br>
|     | Rcpp-devel mailing list<br>
|     | <a href="mailto:Rcpp-devel@lists.r-forge.r-project.org">Rcpp-devel@lists.r-forge.r-<wbr>project.org</a><br>
|     | <a href="https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel" rel="noreferrer" target="_blank">https://lists.r-forge.r-<wbr>project.org/cgi-bin/mailman/<wbr>listinfo/rcpp-devel</a><br>
|<br>
|     --<br>
|     <a href="http://dirk.eddelbuettel.com" rel="noreferrer" target="_blank">http://dirk.eddelbuettel.com</a> | @eddelbuettel | <a href="mailto:edd@debian.org">edd@debian.org</a><br>
|<br>
|<br>
<br>
--<br>
<a href="http://dirk.eddelbuettel.com" rel="noreferrer" target="_blank">http://dirk.eddelbuettel.com</a> | @eddelbuettel | <a href="mailto:edd@debian.org">edd@debian.org</a><br>
</div></div></blockquote></div><br></div>