Deepayan, you fail to load the methods package, so you cannot use S4. Eval "library(methods)" first then everything is fine.
Cheers, Simon On Apr 7, 2007, at 7:33 PM, Deepayan Sarkar wrote: > Hi, > > I think this is a bug (even though I can't find documentation > explicitly saying that it should work). Basically, Rf_PrintValue(obj) > fails when 'obj' is an S4 object that should be printed using show() > rather than print(). From the error message I'm guessing that the need > to use show is detected correctly but then show is not found. > > "cbind2" in the code below is just a representative object, the same > holds for the few other S4 objects I have tried. > > The following uses r-devel on i686-pc-linux-gnu, but the results are > same with R 2.4.1 (with suitable changes to the R_ParseVector call). > On powerpc Linux I get a segfault. > > > $ RPROG=R-devel > $ ${RPROG} --version | head -1 > R version 2.6.0 Under development (unstable) (2007-04-06 r41080) > $ export LD_LIBRARY_PATH=`${RPROG} RHOME`/lib > $ cat parseEvalS4.c > > #include <Rinternals.h> > #include <Rembedded.h> > #include <R_ext/Parse.h> > > int main(int argc, char *argv[]) > { > SEXP e, val; > int i, errorOccurred; > ParseStatus status; > char *cmds[] = { "show(5)", "show(cbind2)", "cbind2" }; > > argv[0] = "R"; > Rf_initEmbeddedR(argc, argv); > > for (i = 0; i < 3; i++) { > printf("** I **: Executing command: %s\n", cmds[i]); > PROTECT(e = R_ParseVector(mkString(cmds[i]), -1, &status, > R_NilValue)); > val = eval(VECTOR_ELT(e, 0), R_GlobalEnv); > printf("** I **: Evaluation succeeded, now printing using > Rf_PrintValue:\n"); > Rf_PrintValue(val); > UNPROTECT(1); > } > > Rf_endEmbeddedR(0); > return 0; > } > > $ > $ gcc -o parseEvalS4 \ >> `${RPROG} CMD config --cppflags` \ >> `${RPROG} CMD config --ldflags` parseEvalS4.c > $ > $ ${RPROG} CMD ./parseEvalS4 --vanilla --silent > ** I **: Executing command: show(5) > [1] 5 > ** I **: Evaluation succeeded, now printing using Rf_PrintValue: > [1] 5 > ** I **: Executing command: show(cbind2) > standardGeneric for "cbind2" defined from package "methods" > > function (x, y) > standardGeneric("cbind2") > <environment: 0x8b34ef8> > Methods may be defined for arguments: x, y > > ** I **: Evaluation succeeded, now printing using Rf_PrintValue: > NULL > ** I **: Executing command: cbind2 > ** I **: Evaluation succeeded, now printing using Rf_PrintValue: > Error: could not find function "show" > Error: unprotect(): only 0 protected items > $ > > -Deepayan > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel