[R] Error when callin g C-Code
Fabian Zäpernick
fab.zaep at web.de
Tue Jun 15 23:20:58 CEST 2010
Hi
when I call the function below in R, i get the error: Object 'pairlist'
can't be converted to 'double'.
#include <R.h>
#include <Rdefines.h>
#include <Rmath.h>
SEXP CSimPoisson(SEXP lambda, SEXP tgrid, SEXP T2M, SEXP Ni, SEXP NT)
{
double sign, EVar;
double *xlambda, *xtgrid, *xT2M, *xNi, *xNT, *xtau;
SEXP tau;
int ltgrid =0;
int i = 0;
int j = 0;
sign = 0;
EVar = 0;
ltgrid = LENGTH(tgrid);
PROTECT(lambda = AS_NUMERIC(lambda));
PROTECT(tgrid = AS_NUMERIC(tgrid));
PROTECT(T2M = AS_NUMERIC(T2M));
PROTECT(Ni = AS_NUMERIC(Ni));
PROTECT(NT = AS_NUMERIC(NT));
PROTECT(tau = NEW_NUMERIC(1));
xlambda = NUMERIC_POINTER(lambda);
xtgrid = NUMERIC_POINTER(tgrid);
xT2M = NUMERIC_POINTER(T2M);
xNi = NUMERIC_POINTER(Ni);
xNT = NUMERIC_POINTER(NT);
xtau = NUMERIC_POINTER(tau);
GetRNGstate();
if(xlambda[0] != 0)
{
while(1)
{
EVar = rexp(xlambda[0]);
sign = sign + EVar;
if (sign > xT2M[0])
{
break;
}
xtau = Realloc(xtau, i+1, double);
xtau[i] = sign;
i = i+1;
for(j; j < ltgrid;j++)
{
if (xtgrid[j] < sign)
{
xNi[j] = xNT[0];
}
{
break;
}
}
xNT[0] = xNT[0] + 1;
}
for(j;j < ltgrid;j++)
{
xNi[j] = xNT[0];
}
}
PutRNGstate();
UNPROTECT(6);
return tau;
}
More information about the R-help
mailing list