Hello everyone,

I met a strange problem when I call R expression from C++, here is the details:

I edited a function eval_R_command();

double eval_R_command(const char *funcName)
{
   SEXP exp,e;
   ParseStatus status = PARSE_OK;
   int i,n;
   double val;

PROTECT(exp=NEW_CHARACTER(1));
SET_STRING_ELT(exp, 0, COPY_TO_USER_STRING(funcName));
PROTECT(e = R_ParseVector(exp, 1, &status));
n = GET_LENGTH(e);
for(i = 0; i < n ; i++)
val = (double)REAL(eval(VECTOR_ELT(e,i), R_GlobalEnv))[0];
UNPROTECT(2);


   return(val);
}

Then if i call with

eval_R_command("mean(1:5)")
it worked fine and got 3,

but

eval_R_command("sum(1:5)")
it produced a strange number 7.41098e-323! not 15

What is the problem?
By the way which is the better way to call the function in R from C++, or they are same?


1. Pass the whole expression as string to R
2. Use Rf_findFun

Thank you very much!

Baiyi Song

CEI
Dortmund University, Germany

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to