52 SEXP Pnames, tparams, pompfun,
fn,
args, ob;
58 qvec = isNull(GET_DIM(
params));
60 PROTECT(tparams = duplicate(
params));
64 dim = INTEGER(GET_DIM(tparams));
67 PROTECT(Pnames = GET_ROWNAMES(GET_DIMNAMES(tparams)));
71 PROTECT(ob = GET_SLOT(
object,install(
"partrans")));
74 PROTECT(pompfun = GET_SLOT(ob,install(
"from")));
77 PROTECT(pompfun = GET_SLOT(ob,install(
"to")));
84 PROTECT(
args = GET_SLOT(
object,install(
"userdata")));
93 double *pa, *ps = REAL(tparams);
100 PROTECT(nm = GET_NAMES(ans));
102 err(
"user transformation functions must return named numeric vectors.");
103 posn = INTEGER(PROTECT(
matchnames(Pnames,nm,
"parameters")));
107 pa = REAL(AS_NUMERIC(ans));
109 for (i = 0; i < LENGTH(ans); i++) ps[posn[i]] = pa[i];
114 pa = REAL(AS_NUMERIC(ans));
115 for (i = 0; i < LENGTH(ans); i++) ps[posn[i]] = pa[i];
131 *((
void **) (&ff)) = R_ExternalPtrAddr(
fn);
133 R_CheckUserInterrupt();
135 idx = INTEGER(GET_SLOT(pompfun,install(
"paramindex")));
151 PROTECT(Pnames = GET_ROWNAMES(GET_DIMNAMES(tparams))); nprotect++;
152 SET_DIM(tparams,R_NilValue);
153 SET_NAMES(tparams,Pnames);
SEXP pomp_fun_handler(SEXP, SEXP, pompfunmode *, SEXP, SEXP, SEXP, SEXP)