[Rcpp-devel] row iterators in RcppArmadillo

Jonathan Fintzi fintzij at uw.edu
Wed Oct 12 22:43:20 CEST 2016


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")

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!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20161012/195348ce/attachment.html>

More information about the Rcpp-devel mailing list