[Rd] Converting SEXP to primitive C types

From: Michael Petrovich <mpetrovich_at_comcast.net>
Date: Tue 11 Jul 2006 - 19:04:14 GMT


I'm new to R development, so this may be a trivial question.

In C, How do you convert a SEXP value returned by an R function to a primitive C type (int, double, char, array, etc.)? I've tried using the INTEGER(x), VECTOR_ELT(x,i), and similar functions found in /src/ include/Rinternals.h, but doing so results in incorrect results or a seg-fault.

For example, I modified /tests/Embedding/Rerror.c so that it tries to print the value returned by the function defined in error.R:

val = Test_tryEval(e, &errorOccurred);
printf("Returned: {%d}\n", VECTOR_ELT(val, 0) );

Where error.R is contains:

foo <-
function(x=3, y=6)
{

   z <- x * y
   z
}

But the output is just "0", not the correct "18". Any ideas?

Thanks for your help!



R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed Jul 12 05:09:57 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 12 Jul 2006 - 14:31:43 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.