Hi, Is the below -- setSeed -- an okay way to set the seed in standalone applications making use of Rlib? It seems to work as expected. Is there a better way to do it? (I'm also looking at do_setseed but am unsure what to supply as op. findFun("set.seed", R_GlobalEnv)?) Thanks much. -- David Faden, dfaden at iastate.edu AIM: pitulx -- #include <assert.h> #include <R.h> #include <Rinternals.h> #include <R_ext/Parse.h> #include <Rmath.h> #include <stdio.h> void setSeed(unsigned int seed) { #ifndef MATHLIB_STANDALONE /** * Following the example in Writing R Extensions 5.10 */ char cmd[256]; SEXP cmdSexp; SEXP cmdExp; ParseStatus status; sprintf(cmd, "set.seed(%u)", seed); PROTECT(cmdSexp = allocVector(STRSXP, 1)); SET_STRING_ELT(cmdSexp, 0, mkChar(cmd)); cmdExp = PROTECT(R_ParseVector(cmdSexp, -1, &status, R_NilValue)); assert(status == PARSE_OK); eval(VECTOR_ELT(cmdExp, 0), R_GlobalEnv); UNPROTECT(2); #else set_seed(seed, seed); #endif } /* Test */ extern int Rf_initEmbeddedR(int argc, const char *argv[]); int main(int numArgs, char** args) { const char *argv[]= {"setseed", "--gui=none", "--silent"}; const int argc = 3; Rf_initEmbeddedR(argc, argv); setSeed((unsigned int)42); printf("%f\n", rnorm(0.0, 1.0)); return 0; }
Prof Brian Ripley
2008-Jan-02 08:30 UTC
[Rd] setting the seed in standalone code using Rlib
What is 'Rlib'? Did you mean embedded R (libR), rather than standalone Rmath? Applications making use of libR are not 'standalone': they use almost all of the installed R files. On Wed, 2 Jan 2008, David Faden wrote:> Hi, > > Is the below -- setSeed -- an okay way to set the seed in standalone > applications making use of Rlib? It seems to work as expected. Is > there a better way to do it? (It is the only documented way to set the seed in embedded R. Should you have meant standalone Rmath, other ways are documented.> I'm also looking at do_setseed but am > unsure what to supply as op. findFun("set.seed", R_GlobalEnv)?) Thanks > much.do_setseed is not an exported entry point, so not available to most users of libR. -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595