pass an element in a list() from R to C
Functions with prototypes of the form SEXP myfunc(SEXP, SEXP, ..., SEXP) must be called via .Call(), not .C(). Also, you declared myfunction as returning SEXP but returned nothing. Try ending the function with return R_NilValue; You should change the default compiler flags to report all warnings (-Wall if you are using gcc). And you left off a line or two of C code that must have been there, or you code would have compiled due to errors #include <R.h> /* not needed if Rinternals is included */ #include <Rinternals.h> Study 'Writing R Extensions' and work through the examples in it. In particular, look at section 5.9. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of teazrq
Sent: Wednesday, October 12, 2011 7:52 PM
To: r-help at r-project.org
Subject: Re: [R] pass an element in a list() from R to C
so, I did this:
B= list("a" = 1, "b" = 2, "c" = 3)
.C("myfunction", B)
the c code is :
SEXP myfunction(SEXP matrix_temp)
{
Rprintf("this element is %6.3f", REAL(VECTOR_ELT(matrix_temp,1))[0]);
}
but after runing the R code, it says Error: VECTOR_ELT() can only be applied
to a 'list', not a 'NULL'
I guess this is because I did not acturally pass a list to the c function,
but why is that?
--
View this message in context: http://r.789695.n4.nabble.com/pass-an-element-in-a-list-from-R-to-C-
tp3900221p3900426.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________ R-help at 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.