Helle R people, here's my slightly out of range question: i am in c code (dll call from R - passing a matrix as double * data, int * row and int * col). In C/C++, i'd like to handle this *double as a 2D matrix with (*row-1) rows and (*col - 1) columns. Something like double t [*row -1 ] [*col -1] doesn't work (of course) but this is the idea - declaration of a 2D array with dimensions passed as arguments. Is the solution pure C/C++ or should i use R.h ... Any advice or solution. Merci d'avance, Cordialement, -- Nicolas Baurin Doctorant Institut de Chimie Organique et Analytique, UPRES-A 6005 Universit? d'Orl?ans, BP 6759 45067 ORLEANS Cedex 2, France Tel: (33+) 2 38 49 45 77 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
C code: how to handle *double as a matrix t[] []
2 messages · nicolas baurin, Martyn Plummer
On 16-May-00 nicolas baurin wrote:
Helle R people, here's my slightly out of range question: i am in c code (dll call from R - passing a matrix as double * data, int * row and int * col). In C/C++, i'd like to handle this *double as a 2D matrix with (*row-1) rows and (*col - 1) columns. Something like double t [*row -1 ] [*col -1] doesn't work (of course) but this is the idea - declaration of a 2D array with dimensions passed as arguments.
I faced this problem myself writing routines for multivariate time series and came up with a solution which you will find in the C source for the "ts" package in files carray.c, carray.h. I have used a structure called "Array" to represent a multi-dimensional array of doubles using arrays of pointers. (and pointers to pointers...) A matrix would be created with the function Array make_matrix(double vec[], int nrow, int ncol); Then you would use the macro MATRIX(x) to cast the result to an array of pointers which behaves just like a two-dimensional array, e.g. MATRIX(x)[i][j] would access the (i,j)th element. There are some convenience functions for doing element-wise arithmetic, matrix multiplication and so on. I hope this helps. Martyn -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._