[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