[R] Attempting to access an R list from within C code
murdoch.duncan at gmail.com
Wed Apr 27 16:59:10 CEST 2011
On 27/04/2011 9:43 AM, Cormac Long wrote:
> Hello R-help,
> I am wondering if anyone can help me with this:
> I want to access data in a list which has been passed
> into a C function, but I cannot work out how to access
> the values. How do I move from the given SEXP pointer
> to the next object in the list? I have tried to use CDR,
> but to no avail. The following code gives an
> 'address (nil), cause unknown'
Generally questions like this are better in the R-devel list, but I'll
answer this one:
What R calls a list() isn't really a list in the Lisp sense, it's a
vector. You access elements in C code by index, e.g.
val = VECTOR_ELT(obj, i);
You set values using code like
SET_VECTOR_ELT(obj, i, newvalue);
> R Code:
> C Code (kept in file thelib.c, compiled on Ubuntu x64
> machine using R2.13.0):
> void showList(SEXP *obj, int *size)
> SEXP *locObj=obj;
> int i;
> Rprintf("Entry is %d: value is %f",i,REAL(*locObj));
> Any help is greatfully appreciated!
> Best wishes,
> Dr. Cormac Long.
> [[alternative HTML version deleted]]
> R-help at r-project.org mailing list
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
More information about the R-help