Hi, Is it possible to pass a matrix object in R to the .C function? Moreover is it possible to have .C return a matrix object back into R? I'm using Rv1.4.1 on a PC platform. Best wishes, Jess _______________________________ Jess Mar Department of Mathematics & Institute for Molecular Bioscience University of Queensland Q 4072 AUSTRALIA -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- 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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
On Mon, 6 May 2002, Jess Mar wrote:> Hi, > > Is it possible to pass a matrix object in R to the .C > function? > > Moreover is it possible to have .C return a matrix object > back into R?Yes, and yes (mostly). A matrix is just a vector with dimension attributes added, so it can be passed to and from .C like any other vector. The dimension information won't be passed, so you may have to supply it explicitly with other arguments, but that's usual in C. So, for example, a 3x4 matrix of reals goes into C as a pointer to 12 doubles. If you construct a new matrix in C it will be passed back as a vector, and you will need to use matrix() to specify dimensions, but if you modify the matrix you were passed the dimensions won't be lost. There are examples in the R source, eg, rowsum() -thomas Thomas Lumley Asst. Professor, Biostatistics tlumley at u.washington.edu University of Washington, Seattle -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- 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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
On Mon, 6 May 2002, Jess Mar wrote:> Hi, > > Is it possible to pass a matrix object in R to the .C > function? > > Moreover is it possible to have .C return a matrix object > back into R?No, no. You have two choices 1) (Recommended.) Use .Call: see the examples in `Writing R Extensions'. 2) A matrix is a vector with dimension attributes, so pass the vector and the dimensions separately. There are lots of examples of that, for example in nnet. This only needs a little more work, but does involve more copying of objects. -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272860 (secr) Oxford OX1 3TG, UK Fax: +44 1865 272595 -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- 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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._