I am currently puzzled by a passage in the R Extensions manual, section 5.10:

SEXP lapply(SEXP list, SEXP expr, SEXP rho)
     {
       R_len_t i, n = length(list);
       SEXP ans;
     
       if(!isNewList(list)) error("`list' must be a list");
       if(!isEnvironment(rho)) error("`rho' should be an environment");
       PROTECT(ans = allocVector(VECSXP, n));
       for(i = 0; i < n; i++) {
         defineVar(install("x"), VECTOR_ELT(list, i), rho);
         SET_VECTOR_ELT(ans, i, eval(expr, rho));
       }
    
I'm trying to understand this code beyond just copying it, and don't find 
definitions for many of the calls.  PROTECT and SEXP have been well discussed 
previously in the document, but what exactly are
        R_len_t
        defineVar
        install
        VECTOR_ELT
        SET_VECTOR_ELT
        
The last I also found in 5.7.4, but it's not defined there either.  

So:
   What do these macros do?  Some I could guess, like is.Environment; and I'm 
fairly confident of R_len_t.  Others I need some help.
   Perhaps they are elswhere in the document?  (My version of acrobat can't do 
searches.)  Is there another document that I should look at first?
   Why "isNewList"?  I would have guessed "isList".  What's the difference?
   
        Thanks for any help,
                Terry Therneau

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to