Using the .C() function in R, you can only pass vectors. Since R stores matrices columnwise as vectors anyhow, they can be passed to your C function as vectors (along with the number of rows in the matrix) and then accessed in familiar [row,col] manner using the following C functions (idea from here):

int Cmatrix(int *row, int *col, int *nrows){

*/* Converts row-col notation into base-zero vector notation, based on a column-wise conversion*/*

int vector_loc;

vector_loc=(*row)-1 + ((*col)-1)*(*nrows);

**return**(vector_loc);

}

void Rmatrix(int *vector_loc,int *row, int *col, int *nrows){

*/*Converts vector notation into row-col notation*/*

*/*vector_loc is the vector address of the matrix (base zero)*/*

*/*row and col are pointers to the row and col variables that will be updated */*

*col=floor(*vector_loc / *nrows)+1;

*row=*vector_loc-((*col)-1)*(*nrows)+1;

}

*Related*

To

**leave a comment** for the author, please follow the link and comment on his blog:

** Quantitative Ecology**.

R-bloggers.com offers

**daily e-mail updates** about

R news and

tutorials on topics such as: visualization (

ggplot2,

Boxplots,

maps,

animation), programming (

RStudio,

Sweave,

LaTeX,

SQL,

Eclipse,

git,

hadoop,

Web Scraping) statistics (

regression,

PCA,

time series,

trading) and more...

If you got this far, why not

__subscribe for updates__ from the site? Choose your flavor:

e-mail,

twitter,

RSS, or

facebook...