[Rcpp-devel] row iterators in RcppArmadillo

Dirk Eddelbuettel edd at debian.org
Wed Oct 12 23:10:04 CEST 2016


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


More information about the Rcpp-devel mailing list