[Rcpp-commits] r2246 - papers/rjournal
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Wed Sep 29 18:39:21 CEST 2010
Author: edd
Date: 2010-09-29 18:39:20 +0200 (Wed, 29 Sep 2010)
New Revision: 2246
Modified:
papers/rjournal/EddelbuettelFrancois.bib
papers/rjournal/EddelbuettelFrancois.tex
Log:
The grand bibtex / citation clean-up Vol 1: paper
Modified: papers/rjournal/EddelbuettelFrancois.bib
===================================================================
--- papers/rjournal/EddelbuettelFrancois.bib 2010-09-29 14:57:01 UTC (rev 2245)
+++ papers/rjournal/EddelbuettelFrancois.bib 2010-09-29 16:39:20 UTC (rev 2246)
@@ -1,279 +1,279 @@
- at String{CRAN = "http://cran.r-project.org/" }
+ at String{CRAN = "http://CRAN.R-Project.org/" }
@String{manuals = CRAN # "doc/manuals/" }
@String{RCoreTeam = "{R Development Core Team}" }
@String{RFoundation = "R Foundation for Statistical Computing" }
+ at String{R-Forge = "http://R-Forge.R-Project.org/" }
- at Book{Abrahams+Gurtovoy:2004,
- author = {David Abrahams and Aleksey Gurtovoy},
- title = {{C++} {T}emplate {M}etaprogramming: Concepts, Tools
- and Techniques from {B}oost and Beyond},
- publisher = {Addison-Wesley},
- year = 2004,
- address = {Boston}
-}
-
- at TechReport{Armadillo,
- author = {Conrad Sanderson},
- title = {{Armadillo}: {An} open source {C++} Algebra Library
- for Fast Prototyping and Computationally Intensive
- Experiments },
- institution = {{NICTA}},
- year = 2010,
- url = "http://arma.sf.net"
-}
-
- at inproceedings{Blitz,
- author = {Todd L. Veldhuizen},
- title = {Arrays in {Blitz++}},
- booktitle = {ISCOPE '98: Proceedings of the Second International
- Symposium on Computing in Object-Oriented Parallel
- Environments},
- isbn = {3-540-65387-2},
- year = 1998,
- pages = {223--230},
- publisher = {Springer-Verlag},
- address = {London, UK},
-}
-
- at manual{Boost:Python,
- author = { David Abrahams and Ralf W. Grosse-Kunstleve },
+ at manual{Abrahams+Grosse-Kunstleve:2003:Boost.Python,
+ author = { David Abrahams and Ralf W. Grosse-Kunstleve },
organization = "Boost Consulting",
- title = "Building Hybrid Systems with Boost.Python",
- year = 2003,
- url = "http://www.boostpro.com/writing/bpl.pdf"
+ title = "Building Hybrid Systems with Boost.Python",
+ year = 2003,
+ url = "http://www.boostpro.com/writing/bpl.pdf"
}
- at manual{R:exts,
- author = RCoreTeam,
- organization = RFoundation,
- address = {Vienna, Austria},
- year = 2010,
- title = "Writing R extensions",
- url = manuals # "R-exts.html"
-}
-
- at manual{R:ints,
- author = RCoreTeam,
- organization = RFoundation,
- address = {Vienna, Austria},
- year = 2010,
- title = "R internals",
- url = manuals # "R-ints.html"
-}
-
- at Book{Vandevoorde+Josuttis:2003,
- author = {David Vandevoorde and Nicolai M. Josuttis},
- title = {{C++} {T}emplates: The Complete Guide},
+ at Book{Abrahams+Gurtovoy:2004:TemplateMetaprogramming,
+ author = {David Abrahams and Aleksey Gurtovoy},
+ title = {{C++} {T}emplate {M}etaprogramming: Concepts, Tools
+ and Techniques from {B}oost and Beyond},
publisher = {Addison-Wesley},
- year = 2003,
- address = {Boston}
+ year = 2004,
+ address = {Boston}
}
- at Manual{armstrong09:RAbstraction,
- title = {{RAbstraction}: {C++} abstraction for {R} objects},
- author = {Whit Armstrong},
- year = 2009,
- note = {Code repository last updated July 22, 2009.},
- url = {http://github.com/armstrtw/rabstraction}
+ at Manual{Armstrong:2009:RAbstraction,
+ title = {{RAbstraction}: {C++} abstraction for {R} objects},
+ author = {Whit Armstrong},
+ year = 2009,
+ note = {Code repository last updated July 22, 2009.},
+ url = {http://github.com/armstrtw/rabstraction}
}
- at Manual{armstrong09:RObjects,
- title = {{RObjects}: {C++} wrapper for R objects (a better
+ at Manual{Armstrong:2009:RObjects,
+ title = {{RObjects}: {C++} wrapper for R objects (a better
implementation of {RAbstraction}},
- author = {Whit Armstrong},
- year = 2009,
- note = {Code repository last updated November 28, 2009.},
- url = {http://github.com/armstrtw/RObjects}
+ author = {Whit Armstrong},
+ year = 2009,
+ note = {Code repository last updated November 28, 2009.},
+ url = {http://github.com/armstrtw/RObjects}
}
- at InProceedings{batesdebroy01:cppclasses,
- author = {Douglas M. Bates and Saikat DebRoy},
- title = {{C++} Classes for {R} Objects},
+ at InProceedings{Bates+DebRoy:2001:C++Classes,
+ author = {Douglas M. Bates and Saikat DebRoy},
+ title = {{C++} Classes for {R} Objects},
booktitle = {Proceedings of the 2nd International Workshop on
Distributed Statistical Computing (DSC 2001)},
- year = 2001,
- editor = {Kurt Hornik and Friedrich Leisch},
- address = {TU Vienna, Austria}
+ year = 2001,
+ editor = {Kurt Hornik and Friedrich Leisch},
+ address = {TU Vienna, Austria}
}
- at Manual{cran:Rserve,
- title = {Rserve: Binary R server},
- author = {Simon Urbanek},
- year = 2010,
- note = {R package version 0.6-2},
- url = {http://www.rforge.net/Rserve/},
+ at Manual{CRAN:RInside,
+ title = {RInside: C++ classes to embed R in C++ applications},
+ author = {Dirk Eddelbuettel and Romain Fran\c{c}ois},
+ year = 2010,
+ note = {R package version 0.2.3},
+ url = CRAN # "package=RInside"
}
- at Manual{cran:cxxPack,
- title = {cxxpack: {R/C++} Tools for Literate Statistical
- Practice},
- author = {Dominick Samperi},
- year = 2010,
- note = {R package version 7.0.6},
- url = {http://CRAN.R-project.org/package=cxxPack},
+ at Manual{CRAN:RProtoBuf,
+ title = {RProtoBuf: R Interface to the Protocol Buffers API},
+ author = {Romain Fran\c{c}ois and Dirk Eddelbuettel},
+ year = 2010,
+ note = {R package version 0.2.0},
+ url = CRAN # "/package=RProtoBuf"
}
- at Manual{cran:inline,
- title = {inline: Inline C, C++, Fortran function calls from
- R},
- author = {Oleg Sklyar and Duncan Murdoch and Mike Smith and
- Dirk Eddelbuettel and Romain Fran\c{c}ois},
- year = 2010,
- note = {R package version 0.3.6},
- url = {http://CRAN.R-project.org/package=inline},
+ at Manual{CRAN:RQuantLib,
+ title = {RQuantLib: {R} interface to the {QuantLib} library},
+ author = {Dirk Eddelbuettel and Khanh Nguyen},
+ year = 2010,
+ note = {R package version 0.3.4},
+ url = CRAN # "/package=RQuantLib"
}
- at Manual{cran:rcpparmadillo,
- title = {RcppArmadillo: Rcpp integration for Armadillo
+ at Manual{CRAN:RcppArmadillo,
+ title = {RcppArmadillo: Rcpp integration for Armadillo
templated linear algebra library},
- author = {Romain Fran\c{c}ois and Dirk Eddelbuettel and
+ author = {Romain Fran\c{c}ois and Dirk Eddelbuettel and
Douglas Bates},
- year = 2010,
- note = {R package version 0.2.7},
- url = {http://CRAN.R-project.org/package=RcppArmadillo}
+ year = 2010,
+ note = {R package version 0.2.7},
+ url = CRAN # "/package=RcppArmadillo"
}
- at Manual{cran:rcppexamples,
- title = {RcppExamples: Examples using {Rcpp} to interface {R}
+ at Manual{CRAN:RcppExamples,
+ title = {RcppExamples: Examples using {Rcpp} to interface {R}
and {C++}},
- author = {Dirk Eddelbuettel and Romain Fran\c{c}ois},
- year = 2010,
- note = {R package version 0.1.1},
- url = {http://CRAN.R-project.org/package=RcppExamples}
+ author = {Dirk Eddelbuettel and Romain Fran\c{c}ois},
+ year = 2010,
+ note = {R package version 0.1.1},
+ url = CRAN # "/package=RcppExamples"
}
- at Manual{cran:rinside,
- title = {RInside: C++ classes to embed R in C++ applications},
- author = {Dirk Eddelbuettel and Romain Fran\c{c}ois},
- year = 2010,
- note = {R package version 0.2.3},
- url = {http://CRAN.R-project.org/package=RInside}
+ at Manual{CRAN:Rserve,
+ title = {Rserve: Binary R server},
+ author = {Simon Urbanek},
+ year = 2010,
+ note = {R package version 0.6-2},
+ url = CRAN # "/package=Rserve"
}
- at Manual{cran:rprotobuf,
- title = {RProtoBuf: R Interface to the Protocol Buffers API},
- author = {Romain Fran\c{c}ois and Dirk Eddelbuettel},
- year = 2010,
- note = {R package version 0.2.0},
- url = {http://CRAN.R-project.org/package=RProtoBuf}
+ at Manual{CRAN:cxxPack,
+ title = {cxxpack: {R/C++} Tools for Literate Statistical
+ Practice},
+ author = {Dominick Samperi},
+ year = 2010,
+ note = {R package version 7.0.6},
+ url = CRAN # "/package=cxxPack"
}
- at Manual{cran:rquantlib,
- title = {RQuantLib: {R} interface to the {QuantLib} library},
- author = {Dirk Eddelbuettel and Khanh Nguyen},
- year = 2010,
- note = {R package version 0.3.4},
- url = {http://CRAN.R-project.org/package=RQuantLib}
+ at Manual{CRAN:inline,
+ title = {inline: Inline C, C++, Fortran function calls from
+ R},
+ author = {Oleg Sklyar and Duncan Murdoch and Mike Smith and
+ Dirk Eddelbuettel and Romain Fran\c{c}ois},
+ year = 2010,
+ note = {R package version 0.3.6},
+ url = CRAN # "/package=inline"
}
- at Unpublished{javagailemanly07:r_cpp,
- author = {James J. Java and Daniel P. Gaile and Kenneth
+ at Unpublished{Java+Gaile+Manly:2007:RCpp,
+ author = {James J. Java and Daniel P. Gaile and Kenneth
E. Manly},
- title = {{R/Cpp}: Interface Classes to Simplify Using {R}
+ title = {{R/Cpp}: Interface Classes to Simplify Using {R}
Objects in {C++} Extensions},
- note = {Unpublished manuscript, University at Buffalo},
+ note = {Unpublished manuscript, University at Buffalo},
url =
{http://sphhp.buffalo.edu/biostat/research/techreports/UB_Biostatistics_TR0702.pdf},
- month = {July},
- year = 2007
+ month = {July},
+ year = 2007
}
- at Manual{liang08:rcppbind,
- title = {rcppbind: {A} template library for R/C++ developers},
- author = {Gang Liang},
- year = 2008,
- note = {R package version 1.0},
- url = {http://r-forge.r-project.org/projects/rcppbind/}
+ at Manual{Liang:2008:rcppbind,
+ title = {rcppbind: {A} template library for R/C++ developers},
+ author = {Gang Liang},
+ year = 2008,
+ note = {R package version 1.0},
+ url = R-Forge # "/projects/rcppbind"
}
- at book{meyers:effectivecplusplus,
- author = {Scott Meyers},
- title = {Effective C++: 55 Specific Ways to Improve Your
+ at book{Meyers:1995:MoreEffectiveC++,
+ author = {Scott Meyers},
+ title = {More Effective C++: 35 New Ways to Improve Your
Programs and Designs},
- year = 2005,
- isbn = {978-0321334879},
- publisher = {Addison-Wesley Professional},
- edition = {Third},
+ year = 1995,
+ isbn = {020163371X},
+ publisher = {Addison-Wesley Longman Publishing Co., Inc.},
+ address = {Boston, MA, USA},
}
- at book{meyers:effectivestl,
- author = {Scott Meyers},
- title = {Effective STL: 50 specific ways to improve your use
+ at book{Meyers:2001:EffectiveSTL,
+ author = {Scott Meyers},
+ title = {Effective STL: 50 specific ways to improve your use
of the standard template library},
- year = 2001,
- isbn = {0-201-74962-9},
+ year = 2001,
+ isbn = {0-201-74962-9},
publisher = {Addison-Wesley Longman Ltd.},
- address = {Essex, UK},
+ address = {Essex, UK},
}
- at book{meyers:moreeffectivecplusplus,
- author = {Scott Meyers},
- title = {More Effective C++: 35 New Ways to Improve Your
+ at book{Meyers:2005:EffectiveC++,
+ author = {Scott Meyers},
+ title = {Effective C++: 55 Specific Ways to Improve Your
Programs and Designs},
- year = 1995,
- isbn = {020163371X},
- publisher = {Addison-Wesley Longman Publishing Co., Inc.},
- address = {Boston, MA, USA},
+ year = 2005,
+ isbn = {978-0321334879},
+ publisher = {Addison-Wesley Professional},
+ edition = {Third},
}
- at Book{plauger_et_al:stlbook,
- author = {P.J. Plauger and Alexander Stepanov and Meng Lee and
+ at Book{Plauger+Et+Al:2000:STL,
+ author = {P.J. Plauger and Alexander Stepanov and Meng Lee and
David R. Musser},
- title = {The {C++} Standard Template Library},
+ title = {The {C++} Standard Template Library},
publisher = {Prentice Hall PTR},
- year = 2000,
- isbn = {978-0134376332},
+ year = 2000,
+ isbn = {978-0134376332},
}
- at InProceedings{runnalls09:cxxr,
- author = {Andrew Runnalls},
- title = {Aspects of {CXXR} internals},
+ at manual{R:Extensions,
+ author = RCoreTeam,
+ organization = RFoundation,
+ address = {Vienna, Austria},
+ year = 2010,
+ title = "Writing R extensions",
+ url = manuals # "R-exts.html"
+}
+
+ at manual{R:Internals,
+ author = RCoreTeam,
+ organization = RFoundation,
+ address = {Vienna, Austria},
+ year = 2010,
+ title = "R internals",
+ url = manuals # "R-ints.html"
+}
+
+ at InProceedings{Runnalls:2009:CXXR,
+ author = {Andrew Runnalls},
+ title = {Aspects of {CXXR} internals},
booktitle = {Directions in Statistical Computing},
- address = {University of Copenhagen, Denmark},
- year = 2009
+ address = {University of Copenhagen, Denmark},
+ year = 2009
}
- at Manual{samperi09:rcpptemplate,
- title = {RcppTemplate: Rcpp {R/C++} Object Mapping Library
+ at Manual{Samperi:2009:RcppTemplate,
+ title = {RcppTemplate: Rcpp {R/C++} Object Mapping Library
and Package Template},
- author = {Dominick Samperi},
- year = 2009,
- note = {(Archived) R package version 6.1},
- url =
- {http://CRAN.R-project.org/src/contrib/Archive/RcppTemplate}
+ author = {Dominick Samperi},
+ year = 2009,
+ note = {(Archived) R package version 6.1},
+ url = CRAN # "/src/contrib/Archive/RcppTemplate"
}
- at Article{templelang09:modestproposal,
- author = {Duncan {Temple Lang}},
- title = {A modest proposal: an approach to making the
+ at TechReport{Sanderson:2010:Armadillo,
+ author = {Conrad Sanderson},
+ title = {{Armadillo}: {An} open source {C++} Algebra Library
+ for Fast Prototyping and Computationally Intensive
+ Experiments },
+ institution = {{NICTA}},
+ year = 2010,
+ url = "http://arma.sf.net"
+}
+
+ at Article{TempleLang:2009:ModestProposal,
+ author = {Duncan {Temple Lang}},
+ title = {A modest proposal: an approach to making the
internal {R} system extensible},
- journal = {Computational Statistics},
- year = 2009,
- volume = 24,
- number = 2,
- pages = {271-281},
- month = {May}
+ journal = {Computational Statistics},
+ year = 2009,
+ volume = 24,
+ number = 2,
+ pages = {271-281},
+ month = {May}
}
- at Article{templelang09:rgcctranslationunit,
- author = {Duncan {Temple Lang}},
- title = {Working with meta-data from {C/C++} code in {R}: the
+ at Article{TempleLang:2009:RGCCTranslationUnit,
+ author = {Duncan {Temple Lang}},
+ title = {Working with meta-data from {C/C++} code in {R}: the
{RGCCTranslationUnit} package},
- journal = {Computational Statistics},
- year = 2009,
- volume = 24,
- number = 2,
- pages = {283-293},
- month = {May}
+ journal = {Computational Statistics},
+ year = 2009,
+ volume = 24,
+ number = 2,
+ pages = {283-293},
+ month = {May}
}
- at InProceedings{urbanek2003:rserve,
- author = {Simon Urbanek},
- title = {{Rserve}: A Fast Way to Provide {R} Functionality to
+ at InProceedings{Urbanek:2003:Rserve,
+ author = {Simon Urbanek},
+ title = {{Rserve}: A Fast Way to Provide {R} Functionality to
Applications},
booktitle = {Proceedings of the 3rd International Workshop on
Distributed Statistical Computing (DSC 2003)},
- year = 2003,
- editor = {Kurt Hornik and Friedrich Leisch and Achim Zeileis},
- address = {TU Vienna, Austria}
+ year = 2003,
+ editor = {Kurt Hornik and Friedrich Leisch and Achim Zeileis},
+ address = {TU Vienna, Austria}
}
+
+ at Book{Vandevoorde+Josuttis:2003:Templates,
+ author = {David Vandevoorde and Nicolai M. Josuttis},
+ title = {{C++} {T}emplates: The Complete Guide},
+ publisher = {Addison-Wesley},
+ year = 2003,
+ address = {Boston}
+}
+
+ at inproceedings{Veldhuizen:1998:Blitz,
+ author = {Todd L. Veldhuizen},
+ title = {Arrays in {Blitz++}},
+ booktitle = {ISCOPE '98: Proceedings of the Second International
+ Symposium on Computing in Object-Oriented Parallel
+ Environments},
+ isbn = {3-540-65387-2},
+ year = 1998,
+ pages = {223--230},
+ publisher = {Springer-Verlag},
+ address = {London, UK},
+}
Modified: papers/rjournal/EddelbuettelFrancois.tex
===================================================================
--- papers/rjournal/EddelbuettelFrancois.tex 2010-09-29 14:57:01 UTC (rev 2245)
+++ papers/rjournal/EddelbuettelFrancois.tex 2010-09-29 16:39:20 UTC (rev 2246)
@@ -17,7 +17,7 @@
\section{Introduction}
-R is an extensible system. The `Writing R Extensions' manual \citep{R:exts}
+R is an extensible system. The `Writing R Extensions' manual \citep{R:Extensions}
describes in detail how to augment R with compiled code,
focusing mostly on the C language. The R API described in `Writing R Extensions' is
based on a set of functions and macros operating on \code{SEXP}, the internal
@@ -47,7 +47,7 @@
\subsection{Historical Context}
\pkg{Rcpp} first appeared in 2005 as a contribution (by Samperi) to the
-\pkg{RQuantLib} package \citep{cran:rquantlib} before becoming a CRAN package
+\pkg{RQuantLib} package \citep{CRAN:RQuantLib} before becoming a CRAN package
in early 2006. Several releases (all by Samperi) followed in quick succession
under the name \pkg{Rcpp}. The package was then renamed to
\pkg{RcppTemplate}; several more releases followed during 2006 under the new
@@ -61,7 +61,7 @@
interface. This constitutes the `classic \pkg{Rcpp}' interface
(not described in this article) which will be maintained for the foreseeable future.
-Yet C++ coding standards continued to evolve \citep{meyers:effectivecplusplus}.
+Yet C++ coding standards continued to evolve \citep{Meyers:2005:EffectiveC++}.
In 2009, Eddelbuettel and Fran\c{c}ois started a significant redesign of the
code base which added numerous new features. Several of these are described
below in the section on the \pkg{Rcpp} API interface, as well as in the
@@ -72,32 +72,32 @@
\subsection{Comparison}
Integration of C++ and R has been addressed by several authors; the earliest
-published reference is probably \cite{batesdebroy01:cppclasses}.
-An unpublished paper by \cite{javagailemanly07:r_cpp} expresses several ideas
+published reference is probably \cite{Bates+DebRoy:2001:C++Classes}.
+An unpublished paper by \cite{Java+Gaile+Manly:2007:RCpp} expresses several ideas
that are close to some of our approaches, though not yet fully fleshed out.
%
-The \pkg{Rserve} package \citep{urbanek2003:rserve,cran:Rserve} was another early approach,
+The \pkg{Rserve} package \citep{Urbanek:2003:Rserve,CRAN:Rserve} was another early approach,
going back to 2002. On the server side, \pkg{Rserve} translates R data
structures into a binary serialization format and uses TCP/IP for
transfer. On the client side, objects are reconstructed as instances of Java
or C++ classes that emulate the structure of R objects.
-The packages \pkg{rcppbind} \citep{liang08:rcppbind}, \pkg{RAbstraction}
-\citep{armstrong09:RAbstraction} and \pkg{RObjects}
-\citep{armstrong09:RObjects} are all implemented using C++ templates.
+The packages \pkg{rcppbind} \citep{Liang:2008:rcppbind}, \pkg{RAbstraction}
+\citep{Armstrong:2009:RAbstraction} and \pkg{RObjects}
+\citep{Armstrong:2009:RObjects} are all implemented using C++ templates.
However, neither has matured to the point of a CRAN release and it is
unclear how much usage these packages are seeing beyond their own authors.
-\pkg{CXXR} \citep{runnalls09:cxxr} comes to this topic from the other side:
+\pkg{CXXR} \citep{Runnalls:2009:CXXR} comes to this topic from the other side:
its aim is to completely refactor R on a stronger C++ foundation.
\pkg{CXXR} is therefore concerned with all aspects of the R interpreter,
REPL, threading---and object interchange between R and C++ is but one
-part. A similar approach is discussed by \cite{templelang09:modestproposal}
+part. A similar approach is discussed by \cite{TempleLang:2009:ModestProposal}
who suggests making low-level internals extensible by package developers in
order to facilitate extending \R.
%
Another slightly different angle is offered by
-\cite{templelang09:rgcctranslationunit} who uses compiler output for
+\cite{TempleLang:2009:RGCCTranslationUnit} who uses compiler output for
references on the code in order to add bindings and wrappers.
\subsection{Rcpp Use Cases}
@@ -131,8 +131,8 @@
years of \pkg{Rcpp} deployment, needs from other projects, knowledge
of the internal R API, as well as current C++ design approaches.
The new features in \pkg{Rcpp} were also motivated by the needs of other
-projects such as \pkg{RInside} \citep{cran:rinside} for easy embedding
-of R in C++ applications and \pkg{RProtoBuf} \citep{cran:rprotobuf}
+projects such as \pkg{RInside} \citep{CRAN:RInside} for easy embedding
+of R in C++ applications and \pkg{RProtoBuf} \citep{CRAN:RProtoBuf}
that interfaces with the Protocol Buffers library.
\subsection{A First Example}
@@ -167,7 +167,7 @@
\verb|operator[]| to extract and set individual elements of the vector.
Fifth, the computation itself is
straightforward embedded looping just as in the original examples in the
-'Writing R Extensions' manual \citep{R:exts}. Sixth, the return conversion
+'Writing R Extensions' manual \citep{R:Extensions}. Sixth, the return conversion
from the \code{NumericVector} to the \code{SEXP} type is also automatic.
We argue that this \pkg{Rcpp}-based usage is much easier to read, write and debug than the
@@ -218,7 +218,7 @@
Internally, an R object must have one type amongst the set of
predefined types, commonly referred to as SEXP types. The `R Internals'
-manual \citep{R:ints} documents these various types.
+manual \citep{R:Internals} documents these various types.
\pkg{Rcpp} associates a dedicated C++ class for most SEXP types, and
therefore only exposes functionality that is relevant to the R object
that it encapsulates.
@@ -236,7 +236,7 @@
\subsection{Numeric vectors}
The following code snippet is taken from Writing R extensions
-\citep{R:exts}. It creates a \code{numeric} vector of two elements
+\citep{R:Extensions}. It creates a \code{numeric} vector of two elements
and assigns some values to it.
\begin{example}
@@ -325,7 +325,7 @@
The C++ to R conversion is performed by the \code{Rcpp::wrap} templated
function. It uses advanced template metaprogramming techniques\footnote{A
discussion of template metaprogramming
- \citep{Vandevoorde+Josuttis:2003,Abrahams+Gurtovoy:2004} is beyond the
+ \citep{Vandevoorde+Josuttis:2003:Templates,Abrahams+Gurtovoy:2004:TemplateMetaprogramming} is beyond the
scope of this article.} to convert a wide and extensible set of types and
classes to the most appropriate type of R object. The signature of the
\code{wrap} template is:
@@ -357,7 +357,7 @@
modern techniques of template meta programming and class traits. The
\code{Rcpp-extending} vignette discusses in depth how to extend \code{wrap}
to third-party types. The \pkg{RcppArmadillo} package
-\citep*{cran:rcpparmadillo} features several examples.
+\citep*{CRAN:RcppArmadillo} features several examples.
The following code snippet illustrates that the design allows
composition:
@@ -400,7 +400,7 @@
be fully or partially specialized to manage conversion of R data
structures to third-party types as can be seen for example in the
\pkg{RcppArmadillo} package which eases transfer of R matrices and vectors to
-the optimised data structures in the Armadillo linear algebra library \citep{Armadillo}.
+the optimised data structures in the Armadillo linear algebra library \citep{Sanderson:2010:Armadillo}.
\subsection{Implicit use of converters}
@@ -436,7 +436,7 @@
In the first part of the example, the code extracts a
\code{std::vector<double>} from the global environment. In order to achieve this,
the \code{operator[]} of \code{Environment} uses the proxy pattern
-\citep{meyers:moreeffectivecplusplus}
+\citep{Meyers:1995:MoreEffectiveC++}
to distinguish between left hand side (LHS) and right hand side (RHS) use.
%
The output of the operator is an instance of the nested class
@@ -537,7 +537,7 @@
Extending R with compiled code also needs to address how to reliably compile,
link and load the code. While using a package is preferable in the long run,
it may be too involved for quick explorations. An alternative is
-provided by the \pkg{inline} package \citep{cran:inline} which compiles,
+provided by the \pkg{inline} package \citep{CRAN:inline} which compiles,
links and loads a C, C++ or Fortran function---directly from the R prompt
using simple functions \code{cfunction} and \code{cxxfunction}. The latter provides an extension which
works particularly well with \pkg{Rcpp} via so-called `plugins' which provide
@@ -595,7 +595,7 @@
The C++ Standard Template Library (STL) offers a variety of generic
algorithms designed to be used on ranges of elements
-\citep{plauger_et_al:stlbook}. A range is any sequence of objects that can be
+\citep{Plauger+Et+Al:2000:STL}. A range is any sequence of objects that can be
accessed through iterators or pointers. All \pkg{Rcpp} classes from the new
API representing vectors (including lists) can produce ranges through their
member functions \code{begin()} and \code{end()}, effectively supporting
@@ -723,7 +723,7 @@
\section{Performance comparison}
In this section, we present several different ways to leverage \pkg{Rcpp} to
-rewrite the convolution example taken from \cite{R:exts}.
+rewrite the convolution example taken from \cite{R:Extensions}.
As part of the redesign of \pkg{Rcpp}, data copy is kept to the
absolute minimum: the \code{RObject} class and all its derived
@@ -734,7 +734,7 @@
The implementation of the \code{operator[]} is designed to be as
efficient as possible, using both inlining and caching,
but even this implementation is still less efficient than the
-reference C implementation described in \cite{R:exts}.
+reference C implementation described in \cite{R:Extensions}.
\pkg{Rcpp} follows design principles from the STL, and classes such
as \code{NumericVector} expose iterators that can be used for
@@ -855,9 +855,9 @@
sugar at the C++ level, including optimized binary operators and many
R functions such as \code{ifelse}, \code{sapply}, \code{any}, ...
The main technique used in Rcpp sugar is
-expression templates pioneered by the Blitz++ library \citep{Blitz}
+expression templates pioneered by the Blitz++ library \citep{Veldhuizen:1998:Blitz}
and since adopted
-by projects such as Armadillo \citep{Armadillo}.
+by projects such as Armadillo \citep{Sanderson:2010:Armadillo}.
Access to most of the d/p/q/r-variants of the statistical distribution
functions has also been added, enabling the use of expressions such as
\code{dnorm(X, m, s)} for a numeric vector $X$ and scalars $m$ and
@@ -869,7 +869,7 @@
at the R level. This offers access to C++ code from R using even less
interface code than by writing accessor function. Modules are inspired by
the \code{Boost.Python} library
-\citep{Boost:Python} that provides similar functionality for Python. C++ Classes
+\citep{Abrahams+Grosse-Kunstleve:2003:Boost.Python} that provides similar functionality for Python. C++ Classes
exposed by Rcpp modules are shadowed by reference classes that have been
introduced in R 2.12.0.
More information about the Rcpp-commits
mailing list