[Rcpp-devel] Issue with Matrices and Iterators

Matteo Fasiolo matteo.fasiolo at gmail.com
Mon Oct 14 21:39:15 CEST 2013


Hi Ale,

 maybe I'm wrong but mat(0,_) is not a NumericVector, but a Rcpp::MatrixRow.
So your function sum() is being called with arguments of the wront type
(the error
message is saying that).

If instead you select a column mat( _, 0) you have a conversion to a
NumericVector.
I've encountered the same issue a couple of time.

Matteo


On Mon, Oct 14, 2013 at 8:21 PM, Alessandro Mammana
<mammana at molgen.mpg.de>wrote:

> Hi all,
> I have very little experience with Rcpp and also with c++, so I am
> sorry if my question might be too stupid.
> I am trying to use iterators in my code, because I understand them
> better than vectors, because they should be efficient, and because I
> should be able to combine different implementations of vector and
> matrix classes. However the following code does not compile:
>
> #include <Rcpp.h>
> using namespace Rcpp;
>
> typedef NumericVector::iterator DoubleIter;
>
> double sum(DoubleIter b, DoubleIter e){
>     double sum = 0;
>     while (b!=e){
>         sum += *(b++);
>     }
>     return sum;
> }
>
> // [[Rcpp::export]]
> double sumFirstRow(NumericMatrix mat){
>     return sum(mat(0,_).begin(), mat(0,_).end());
> }
>
> The error message is not very useful (or at least I cannot interpret it):
>
> In function 'double sumFirstRow(Rcpp::NumericMatrix)':
> error: no matching function for call to
> 'sum(Rcpp::MatrixRow<14>::iterator, Rcpp::MatrixRow<14>::iterator)'
> note: candidates are:
> note: double sum(DoubleIter, DoubleIter)
> note: no known conversion for argument 1 from
> 'Rcpp::MatrixRow<14>::iterator' to 'DoubleIter {aka double*}'
>
> Am I missing something very basic?
> Thanks a lot!
> Ale
> _______________________________________________
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20131014/5fe13c63/attachment.html>


More information about the Rcpp-devel mailing list