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