Hello, You pretty much have to do this manually. rev is part of Rcpp sugar. Defined here: https://github.com/RcppCore/Rcpp/blob/master/inst/include/Rcpp/sugar/functions/rev.h
It does not preserve names. That’s by design. It would have been very difficult to do it automatically, i.e. what happens here: rev( x * y ), etc … it is hard to decide which names to propagate, harder to try to follow R rules about it, and even harder to implement. So if you want names, you have to handle them yourself. Romain Le 6 juin 2014 à 12:58, Sven E. Templer <sven.temp...@gmail.com> a écrit : > Hi, > > consider this code: > > > require(Rcpp) > require(inline) > t <- cxxfunction(sig=c(xx="character"), plugin="Rcpp", body=' > CharacterVector x(xx); > IntegerVector t = table(x); > return t;') > r <- cxxfunction(sig=c(xx="character"), plugin="Rcpp", body=' > CharacterVector x(xx); > IntegerVector t = table(x); > IntegerVector r = rev(t); > return r;') > o <- cxxfunction(sig=c(xx="character"), plugin="Rcpp", body=' > CharacterVector x(xx); > IntegerVector t = table(x); > CharacterVector n = t.names(); > IntegerVector r = rev(t); > r.names() = rev(n); > return r;') > t(c('a','a','b',NA)) > r(c('a','a','b',NA)) > o(c('a','a','b',NA)) > > > Reversed vectors loose their name ( t() vs r() ) and have to be copied > and reversed 'manually' ( as in o() ). Is rev() a function declared by > Rcpp, if so can names be reserved while reverting or is there any > other easier solution than in o() ? > > Thank you! > Sven > _______________________________________________ > 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 _______________________________________________ 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