[Rcpp-devel] List of matrices mimicking 3d array?
Dirk Eddelbuettel
edd at debian.org
Thu Jan 5 17:19:16 CET 2012
On 5 January 2012 at 10:00, Edward Wallace wrote:
| In the end I wrote an obvious miniature sugary hack to convert 3d array indices
| into numeric vector indices
|
| int threeDIndex(int j, int k, int l, int J, int K, int L) {
| return j*K*L + k*L + l;
| }
|
| so that where one wants to call A[j,k,l], instead one calls A[ threeDIndex
Just to restate something many of us tripped over at one point or other:
A[j,k,l] is NOT a valid C or C++ statement: the comma is an operator, so you
get something like A[l] here.
Multidimensional indexing _must_ use round parens: A(j,k,l).
And I do think Rcpp support multi-dim arrays. Whenever I do "real math work"
I tend to use RcppArmadillo though which has vectors, matrices, cubes
(3-dim), as well as fields (similar to lists or matlab cells).
Dirk
| (j,k,l,J,K,L) ], where dim(A) = (J,K,L). Presumably a programmer with more
| experience than me could write a cpp method to do this for NumericVectors with
| dimension attribute?
|
| Edward
|
| On Wednesday, January 4, 2012, Dirk Eddelbuettel wrote:
|
|
| On 4 January 2012 at 19:11, Hadley Wickham wrote:
| | > Our arrays in Rcpp can be multidimensional just like they can in R.
| Here is a
| | > line from one of the unit tests:
| | >
| | > return IntegerVector( Dimension( 2, 3, 4) ) ;
| | >
| | > which sets the dim attribute of a given vector to c(2,3,4) just like
| you
| | > would in R. That should all work too but may have seen less exposure
| than
| | > other parts of our code.
| |
| | Am I reading the Vector documentation correctly
| | (http://dirk.eddelbuettel.com/code/rcpp/html/classVector.html) in
| | interpreting that while you can create vectors with dimensions, that
| | there is no syntactic sugar for multidimensional indexing? I'm not
|
| I think that is correct. We do have Range objects, and that is about it.
| This is not yet a level comparable to R.
|
| The unitTests/ directories, as always, has the largest collections of
| working
| idioms to copy from. runit.Vector.r is probably what you want to look at.
|
| | quite sure how to interpret method signatures like operator() (const
| | size_t &i, const size_t &j) const. I can guess that means you can
| | index by two integers - but I don't know what those two integers mean.
|
| Well if I had to guess I'd say row and column ...
|
| Dirk
|
| |
| | Hadley
| |
| | --
| | Assistant Professor / Dobelman Family Junior Chair
| | Department of Statistics / Rice University
| | http://had.co.nz/
|
| --
| "Outside of a dog, a book is a man's best friend. Inside of a dog, it is
| too
| dark to read." -- Groucho Marx
|
|
|
| --
| Edward Wallace, PhD
| Harvard FAS center for Systems Biology
| +1-773-517-4009
--
"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