[Rcpp-devel] generalizing make_list
Le 18/03/10 12:55, Dirk Eddelbuettel a ?crit :
Hi Romain, On 18 March 2010 at 12:22, Romain Francois wrote: | Hello, | | I am very happy about the make_list templates, but it only handles | lists, and the next best thing would be having something that would | handle all sorts of vectors. My first question would be "Why exactly?" We have a very clear use case for lists as we need to ship results back to the calling R process. But why do we need that ?
named vectors are as common in R as named lists. RcppArmadillo has an example of creating a named integer vector: IntegerVector version(3); version = av.major, av.minor, av.patch ; CharacterVector names(3); names = "major", "minor", "patch" ; version.names() = names ;
| With some imagination, I think we can achieve this, but I was wondering | what the interface should be like. I was thinking maybe making it static | member function templates of Vector<>, so that we would do for example: | | NumericVector x = NumericVector::create( | _["x"] = 2.0, | _["y"] = 1.0 | ) ; Again, why? I would guess that the corpus of existing C++ code calling its elements by name is pretty limited. So why do we need or want to create named vectors at the c++ level? For returning to R, sure, but can't that be had with less firepower?
For example ?
Don't want to be difficult here but maybe our time is spend more fruitfully one layer up (eg returning to RProtoBuf)
Sure. be my guest. why don't you start a discussion on what features of RProtoBuf you are talking about and how you are going to handle them ...
than the endlessly add features
here. Rcpp is pretty good as it stands, why not let it rest a little?
Dirk
| I am more interested about a discussion about what should it be instead
| of create than the usual conversation about _. There will be an
| alternative to _, although it might involve more syntax, e.g.
|
| NumericVector x = NumericVector::create(
| named<REALSXP>("x") = 2.0,
| named<REALSXP>("y") = 1.0
| ) ;
|
| or :
|
| NumericVector x = NumericVector::create(
| NumericVector::named("x") = 2.0,
| NumericVector::named("y") = 1.0
| ) ;
|
| etc ...
|
| Ideas ?
Romain Francois Professional R Enthusiast +33(0) 6 28 91 30 30 http://romainfrancois.blog.free.fr |- http://tr.im/OIXN : raster images and RImageJ |- http://tr.im/OcQe : Rcpp 0.7.7 `- http://tr.im/O1wO : highlight 0.1-5