Thanks! Probably a stupid question, but where are these functions defined? In math.h I see
VECTORIZED_MATH_1(log,::log) but - where to look for the implementation? Cheers Søren |-----Original Message----- |From: Dirk Eddelbuettel [mailto:e...@debian.org] |Sent: 4. januar 2015 16:32 |To: Søren Højsgaard |Cc: rcpp-devel@lists.r-forge.r-project.org |Subject: Re: [Rcpp-devel] Rcpp sugar preserving attributes | | |Søren, | |Happy New Year! | |On 4 January 2015 at 09:53, Søren Højsgaard wrote: || Dear all, || || I have noticed an issue with preserving attributes (or rather |attributes that are not preserved). Consider this code where I take the |log of an array: | |Quite possible. | |Attributes are just attached to objects, and we may well drop them along |the way. Which is a bug. Maybe you can start rewriting this in a way |that preserves attributes? log is one of many 'math' functions |implemented via macro expansion so if you get it right for you get it |right for many... | |Dirk | || || #include <Rcpp.h> || using namespace Rcpp; || || //[[Rcpp::export]] || NumericVector fun1(NumericVector x){ || return log( x ); || } || || //[[Rcpp::export]] || NumericVector fun2(NumericVector x){ || NumericVector out=clone(x), tmp=log(x); || for (int i=0;i<x.size();++i)out[i] = tmp[i]; || return out; || } || || /*** R || x <- HairEyeColor; x || fun1(x) || fun2(x) || */ || || || > fun1(x) || [1] 3.4657359 3.9702919 2.3025851 1.0986123 2.3978953 3.9120230 || 2.3025851 3.4011974 2.3025851 3.2188758 1.9459101 [12] 1.6094379 || 1.0986123 2.7080502 1.9459101 2.0794415 3.5835189 4.1896547 2.7725887 || 1.3862944 2.1972246 3.5263605 [23] 1.9459101 4.1588831 1.6094379 || 3.3672958 1.9459101 1.6094379 0.6931472 2.6390573 1.9459101 2.0794415 || || > fun2(x) || , , Sex = Male || || Eye || Hair Brown Blue Hazel Green || Black 3.4657359 2.3978953 2.3025851 1.0986123 || Brown 3.9702919 3.9120230 3.2188758 2.7080502 || Red 2.3025851 2.3025851 1.9459101 1.9459101 || Blond 1.0986123 3.4011974 1.6094379 2.0794415 || || , , Sex = Female || || Eye || Hair Brown Blue Hazel Green || Black 3.5835189 2.1972246 1.6094379 0.6931472 || Brown 4.1896547 3.5263605 3.3672958 2.6390573 || Red 2.7725887 1.9459101 1.9459101 1.9459101 || Blond 1.3862944 4.1588831 1.6094379 2.0794415 || || fun2 is kludgy! Is there a more elegant way of preserving attributes |using Rcpp sugar? || || All the best || Søren || || || || _______________________________________________ || Rcpp-devel mailing list || Rcpp-devel@lists.r-forge.r-project.org || https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-deve || l | |-- |http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org _______________________________________________ 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