[Rcpp-devel] For a Matrix A, is A(i, j) or A[i, j] preferred as an accessor for an element

Dirk Eddelbuettel edd at debian.org
Mon Dec 10 17:53:50 CET 2012

On 10 December 2012 at 10:45, Douglas Bates wrote:
| On Mon, Dec 10, 2012 at 10:38 AM, Romain Francois <romain at r-enthusiasts.com>
| wrote:
|     Le 10/12/12 17:29, Douglas Bates a écrit :
|         or does it matter?
|     A[i,j] is wrong, not valid C or C++ code. so there is only one choice.

No, it's worse, It is valid:

   R> cppFunction("double val(Rcpp::NumericMatrix X) { return X[1,2]; }")
   R> val(matrix(1:9,3,3))
  [1] 3

| Indeed.  Thanks.  Somehow I managed to convince myself that I had used A[i,j]
| at some point and the compiler accepted it.  Apparently my memory isn't what
| it used to be.

.. but it is possibly the worst gotcha we can have in C++ and matrices as the
comma _is_ in fact a valid operator coming from C --- here though A[i,j] simply
collapses to A[j] with i being ignored as comma sequences the statements
around it.

Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com  

More information about the Rcpp-devel mailing list