[Rcpp-devel] C++ version of lapply using std::transform
Romain Francois
romain at r-enthusiasts.com
Tue Feb 9 20:00:21 CET 2010
Hello,
I've just commited some code that allows iterating over generic and
expression vectors (Rcpp::GenericVector and Rcpp::ExpressionVector).
This allows to write for example a c++ version of lapply (without the
handling of the ellipsis (...) ) using the std::transform algorithm from
the STL :
cpp_lapply <- cfunction(signature(x = "list", g = "function" ), '
Function fun(g) ;
List input(x) ;
List output( input.size() ) ;
std::transform( input.begin(), input.end(), output.begin(), fun ) ;
output.names() = input.names() ;
return output ;
', Rcpp = TRUE, includes = "using namespace Rcpp;" )
> data <- list( x = letters, y = LETTERS, z = 1:4 )
> cpp_lapply( data, length )
$x
[1] 26
$y
[1] 26
$z
[1] 4
Have fun !
Romain
--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://tr.im/NrTG : Rcpp 0.7.5
|- http://tr.im/MPYc : RProtoBuf: protocol buffers for R
`- http://tr.im/KfKn : Rcpp 0.7.2
More information about the Rcpp-devel
mailing list