Ken, On 19 February 2013 at 23:24, Ken Williams wrote: | > From: Dirk Eddelbuettel [mailto:e...@debian.org] | > Eeeek. I prefer the more C++-y way of writing df(j,i). | | Attempting to do so, I get a compile-time error: | | window.cpp:68:34: error: ambiguous overload for 'operator-' in 'Rcpp::Vector<RTYPE>::operator()(const size_t&, const size_t&) [with int RTYPE = 19, Rcpp::Vector<RTYPE>::Proxy = Rcpp::internal::generic_proxy<19>, size_t = long long unsigned int]((* &((size_t)j)), (* &((size_t)i))) - Rcpp::Vector<RTYPE>::operator()(const size_t&, const size_t&) [with int RTYPE = 19, Rcpp::Vector<RTYPE>::Proxy = Rcpp::internal::generic_proxy<19>, size_t = long long unsigned int]((* &((size_t)j)), (* &((size_t)last_i)))' | window.cpp:68:34: note: candidates are: | window.cpp:68:34: note: operator-(SEXP, SEXP) <built-in> | window.cpp:68:34: note: operator-(SEXP, long long int) <built-in> | window.cpp:68:34: note: operator-(int, int) <built-in> | | For context, the line that's failing is: | | if(fabs(df(j,i)-df(j,last_i))>thresh) {
You are relying on an implicit conversion here to make df(.,.) a double. The compiler tells you that it is trying sugar operators. Sugar is good to have in Rcpp, but occassionally there is a cost. This may be one of those times. Try double a = df(j,i); double b = df(j,last_i); if (fabs(a - b) > thresh) { and see if that works. You may want to look into using Armadillo vectors and matrices (or Eigen's, we are equal opportunity here). I had good luck with Armadilllo. | I was operating under the premise that there "must be" a constant-time accessor for a List element (DataFrame column), and once I have that, a constant-time accessor for an element of that vector. I know the latter is true, but is the former not true? I assumed it was but that I just couldn't find it. Sadly, "must be" is a little too optimistic. Not every conceivable operation is implemented in Rcpp, but we are always open to patches to make it more complete. Hope this helps, Dirk -- Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel