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