[Rcpp-devel] Internals: how does DataFrame get initialized?

Dirk Eddelbuettel edd at debian.org
Thu Mar 1 02:15:27 CET 2012


On 1 March 2012 at 10:00, Darren Cook wrote:
| >> DottedPair derives from RObject, but adds, er, functions. (Which Rcpp
| >> functionality is this adding? Why are these functions in their own class
| >> and not in RObject?)
| > 
| > DottedPair.cpp adds methods. And as far as I can see, everything in
| > DottedPair.h is within the DottedPair class's curly braces. Which
| > functions do you mean should be in RObject?
| 
| Thanks for the reply Davor. It was a design question: why does
| DottedPair [2] have its own class? It does not add any member variables
| and it does not override any functions in its base class [1], so I
| assume it exists solely for code clarity [3]. I wondered what concept is
| was clarifying or representing.

At a first approximation, everything is done in a way that made sense with
_given R representation_. Rcpp is not a green field project, it exists to get
data back and forth between C++ and R.
 
I have some vague memory of some of these things having pairlist objects
behind them, and pairlist objects not being that beloved anymore in R land
either.  But compatibility matters...

| Darren
| 
| [1]:
| https://r-forge.r-project.org/scm/viewvc.php/pkg/Rcpp/inst/include/Rcpp/RObject.h?view=markup&root=rcpp
| 
| [2]:
| https://r-forge.r-project.org/scm/viewvc.php/pkg/Rcpp/inst/include/Rcpp/DottedPair.h?view=markup&root=rcpp
| 
| [3]: Another way of saying that is that it seems I could move all
| DottedPair's functions into Robject, then write:
| 
|   class DottedPair: public Robject {}
| 
| and everything should still compile and work. (Or I've misunderstood
| something :-)

Not to put too fine a point on it, but we have 700+ unit tests so that you
could answer that question of yours by making that change yourself and
running R CMD check.  If it passes, fine. If not, well....

Dirk
 

-- 
"Outside of a dog, a book is a man's best friend. Inside of a dog, it is too
dark to read." -- Groucho Marx


More information about the Rcpp-devel mailing list