Skip to content
Prev 34256 / 63424 Next

creating environments in package's C code

Martin Becker wrote:
Here's a function I use in rapache to create one:

static SEXP NewEnv(SEXP enclos){
     SEXP env;
     PROTECT(env = allocSExp(ENVSXP));

     SET_FRAME(env, R_NilValue);
     SET_ENCLOS(env, (enclos)? enclos: R_GlobalEnv);
     SET_HASHTAB(env, R_NilValue);
     SET_ATTRIB(env, R_NilValue);

     UNPROTECT(1);

     return env;
}


and an example that creates a new environment and then assigns a 
variable named OK an integer vector length 1 with value 0:

SEXP env = NewEnv(R_GlobalEnv);
defineVar(install("OK"),NewInteger(0),env);

Best

Jeff