Le 21/09/10 11:46, Christian Gunning a écrit :
You can always attach dimensions later:

ret.attr( "dim" ) = Dimension( 2, 2, 2) ;

Ah, yes.  Thanks.

I'd rather encapsulate this a bit rather than let people touch the dim attribute, or perhaps mimic what R is doing :

> x <- 1:24
> attr( x, "dim" ) <- c(2,12)
> x
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
[1,]    1    3    5    7    9   11   13   15   17    19    21    23
[2,]    2    4    6    8   10   12   14   16   18    20    22    24
> attr( x, "dim" ) <- c(2,17)
Erreur dans attr(x, "dim") <- c(2, 17) :
  dims [produit 34] ne correspond pas à la longueur de l'objet [24]

and gatekeep inside the attr() function

You can however Rcpp::wrap a cube. It is safer because the memory gets
copied, but less efficient, because the memory is copied.

Got it.  I erroneously assumed an implicit wrap somewhere.

There was no implicit wrap in the code you shown.

Sure. I need to think a little bit more about how to do Rcpp::Array, etc ...
because an Array could have an arbitrary number of dimensions.
Perhaps embedding information into the class would work.

// make an array of 3 dimensions, etc ...
Rcpp::Array<3>  ret( y ) ;

Yes, I've been thinking similarly about an Indexer class.  Accounting
for a variable number of dimensions looks unpleasantly messy.

Yes. Feel free to share thoughts on that.

* What about "ret = ret * as<int>(x);" causes ret to lose it's dimension?

Omission, lack of time, I'm not using arrays all that much personally, etc

Oh, I was thinking more along the lines of "by what mechanism is
dimension lost" than "why is grass green" :)

-Christian

Because we make a new vector and don't keep the attributes of the old one, including the "dim" attribute.

--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
|- http://bit.ly/cCmbgg : Rcpp 0.8.6
|- http://bit.ly/bzoWrs : Rcpp svn revision 2000
`- http://bit.ly/b8VNE2 : Rcpp at LondonR, oct 5th


_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to