[Rcpp-devel] row iterators in RcppArmadillo

Jonathan Fintzi fintzij at uw.edu
Wed Oct 12 23:20:36 CEST 2016


Hi Dirk,

Thanks for the quick response. In the broader project, the vector being
copied from is an Rcpp::NumericVector that contatenates vectorized versions
of a number of other objects that are integrated numerically using the
boost odeint solvers. I couldn't quite get the numerical integrators to
play nice with Armadillo objects, and in using std::copy I was trying to
avoid converting the vector 'v' to an arma::vec since I would have to
convert it back for further integration. Perhaps this was a mistake?

Still, I don't quite understand why armadillo row pointers don't work which
armadillo column pointers are fine.

Thanks,
Jon

On Wed, Oct 12, 2016 at 2:10 PM, Dirk Eddelbuettel <edd at debian.org> wrote:

>
> On 12 October 2016 at 13:43, Jonathan Fintzi wrote:
> | Hello,
> |
> | I am trying to use the std::copy() function to copy elements from an
> | Rcpp::NumericVector into rows of armadillo matrices. A simplified
> version of my
> | code is as follows:
> |
> | cppFunction('void copyinto(Rcpp::NumericVector& v, arma::mat& d1,
> arma::mat&
> | d2) {
> |         std::copy(v.begin(), v.begin() + 3, d1.begin_row(0));
> |         std::copy(v.begin() + 3, v.end(), d2.begin_row(0));
> | }', depends = "RcppArmadillo")
>
> You should not need to mix an _Rcpp_ vector with an _Armadillo_ matrix
> using
> std::copy.  Check the decent Armadillo docs -- all the subsetting and
> slicing
> can be done with Armadillo.  And that is what I would do.
>
> But maybe I didn't quite understand what you are really after.
>
> Dirk
>
> | v <- runif(6)
> | d1 <- matrix(0.0, 3,3)
> | d2 <- matrix(0.0, 3,3)
> |
> | copyinto(v, d1, d2)
> |
> | However, when I attempt to compile the code, I receive a list of
> compilation
> | errors including "no type named 'XXXXXX' in 'class arma::Mat<double>
> | row_iterator", where XXXXXX is iterator_category, value_type,
> difference_type,
> | pointer, and reference.
> |
> | If I change the iterators to column iterators (e.g. d1.begin_col(0))
> everything
> | compiles and works just fine. I feel that I must be missing something
> quite
> | basic here, but in searching around I haven't been able to identify my
> mistake.
> |
> | Thank you for your help!
> | Jon
> | _______________________________________________
> | Rcpp-devel mailing list
> | Rcpp-devel at lists.r-forge.r-project.org
> | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
> --
> http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20161012/b7351025/attachment.html>


More information about the Rcpp-devel mailing list