Hi all, I'm new to this "call C from R" so bear with me. I'v been writing some C code and compile it to .dll files that can be called from R. It was successful until today, when I start a new part of this project. So, my R code passes arguments to this C code, and these arguments including some integers and matrices. it looks like this, and it works fine: .C("Myfunction", as.matrix(dataset), as.integer(dim(dataset)) ) btw, In the C code, I will read the dataset as double *
Now, I have several datasets that in a list(), you can think of it as A = list() A[[1]] = dataset1 A[[2]] = dataset2 when I run this function again, by using .C("Myfunction", as.matrix(A[[1]]), as.integer(dim(A[[1]])) ) it does not work anymore. It seems like the C code does not recognize "as.matrix(A[[1]])" as a pointer to A[[1]]. Anyone knows why is that? btw, I did some reading on similar issue, and it seems that people use SEXP more offen to pass arguments from R to C. I tried some of those by trying to pass the whole list A to the C code and then use something like REAL(VECTOR_ELT(A, 1))[0] to read each element from the list, however, it still does not work... if using SEXP as object type is the currect way to do it, could anyone give an example of how to extract element from the list in the c code? and also, when I claim the function in C, should it be SEXP myfunction2(SEXP *list) or SEXP myfunction2(SEXP list) these things are really confusing me.... Thank you for going through this post... Any helps are appreciated. Ruoqing -- View this message in context: http://r.789695.n4.nabble.com/pass-an-element-in-a-list-from-R-to-C-tp3900221p3900221.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.