|
Rcpp 0.7.8
Version 0.7.8 of the Rcpp
R / C++ interface classes is now on CRAN and
in Debian. As of right now. Debian has
already built packages for eight more architectures; and CRAN has built the
Windows binary. Oh, and cran2deb
had Debian packages for 'testing' before I was done with the blog entry.
This is a minor feature release based on a over three weeks of changes that
are summarised below in the extract from the NEWS file. Some noteworthy
highlights are
- something that isn't there: we have split most of the example code and
their manual pages off into a new package RcppExamples which can now be
released given that 0.7.8 is out
- another new package RcppArmadillo will also be forthcoming shortly: it
shows how to use Rcpp with Conrad Sanderson's excellent
Armadillo C++ library for linear
algebra; this required some internal code changes to seamlessly pass data
from R via Rcpp to Armadillo and back;
- there is a new example fastLm using Armadillo for faster (than
lm() or lm.fit()) linear model fits
- yet more internal improvements to the class hierarchy as detailed
below; more support for STL iterators and algorithms;
- more build fixes; paths with spaces in the name should now be tolerated
- and last but not least a new
introduction / overview vignette
based on a just-submitted paper on Rcpp.
The full NEWS entry for this release follows:
0.7.8 2010-03-09
o All vector classes are now generated from the same template class
Rcpp::Vector where RTYPE is one of LGLSXP, RAWSXP, STRSXP,
INTSXP, REALSXP, CPLXSXP, VECSXP and EXPRSXP. typedef are still
available : IntegerVector, ... All vector classes gain methods
inspired from the std::vector template : push_back, push_front,
erase, insert
o New template class Rcpp::Matrix deriving from
Rcpp::Vector. These classes have the same functionality
as Vector but have a different set of constructors which checks
that the input SEXP is a matrix. Matrix<> however does/can not
guarantee that the object will allways be a matrix. typedef
are defined for convenience: Matrix is IntegerMatrix, etc...
o New class Rcpp::Row that represents a row of a matrix
of the same type. Row contains a reference to the underlying
Vector and exposes a nested iterator type that allows use of
STL algorithms on each element of a matrix row. The Vector class
gains a row(int) method that returns a Row instance. Usage
examples are available in the runit.Row.R unit test file
o New class Rcpp::Column that represents a column of a
matrix. (similar to Rcpp::Row). Usage examples are
available in the runit.Column.R unit test file
o The Rcpp::as template function has been reworked to be more
generic. It now handles more STL containers, such as deque and
list, and the genericity can be used to implement as for more
types. The package RcppArmadillo has examples of this
o new template class Rcpp::fixed_call that can be used in STL algorithms
such as std::generate.
o RcppExample et al have been moved to a new package RcppExamples;
src/Makevars and src/Makevars.win simplified accordingly
o New class Rcpp::StringTransformer and helper function
Rcpp::make_string_transformer that can be used to create a function
that transforms a string character by character. For example
Rcpp::make_string_transformer(tolower) transforms each character
using tolower. The RcppExamples package has an example of this.
o Improved src/Makevars.win thanks to Brian Ripley
o New examples for 'fast lm' using compiled code:
- using GNU GSL and a C interface
- using Armadillo (http://arma.sf.net) and a C++ interface
Armadillo is seen as faster for lack of extra copying
o A new package RcppArmadillo (to be released shortly) now serves
as a concrete example on how to extend Rcpp to work with a modern
C++ library such as the heavily-templated Armadillo library
o Added a new vignette 'Rcpp-introduction' based on a just-submitted
overview article on Rcpp
As always, even fuller details are in the ChangeLog on the
Rcpp page which also
leads to the downloads, the
browseable
doxygen docs and zip files of doxygen output for the standard formats.
A local directory has
source and documentation too.
Questions, comments etc should go to the
rcpp-devel mailing list
off the R-Forge page
Update: Two links corrected.
/code/rcpp |
permanent link
|