Directing output to R.app GUI from compiled C code
If all you need to do is print a GSL vector, why not just do something
simple like the following:
for(i = 0; i < n; i++)
Rprintf("%.3f ", gsl_vector_get(X, i));
}
That is strange that gsl_vector_fprintf is not working, so an
explanation as to why would still be interesting.
Ryan
On Mar 29, 2008, at 6:03 PM, Michael Braun wrote:
My C code is complex (and obscure), so I'd hate to bore the rest of
the list with the details. But perhaps this simple example will
narrow things down. (My shared library is compiled using R CMD SHLIB,
and loaded into R using dyn.load("xxx.so"). I call the function using
the .C() function. The application is straight numerical computation,
with no fancy graphics or anything like that.)
If I print text using the R API function
Rprintf("This is some text\n");
then I see that text, whether I run R from either the terminal or
using R.app. But, if I use, from the standard C library,
printf("This is some text\n");
then I see it if I run R in the terminal window, but NOT in R.app.
A more complicated example is if I try to print a gsl vector
gsl_vector_fprintf(stdout, X, "%.3f");
The result shows up in the terminal window, but not in R.app. What
I'd like to do is find something to replace stdout that would
guarantee that the output goes to the appropriate R window.
I'm not doing anything special to flush output (I'm a new C
programmer--is this something I need to do?). I get this problem if I
am trying to print a single line, as above, or a HUGE number of
gsl_vectors (it was being caught in an infinite loop of printing
vectors--and not seeing the output to let me know I was in the loop--
that led me to this question).
I hope this is detailed enough. Please let me know if more
information is needed.
Thanks,
Michael
On Mar 29, 2008, at 5:24 PM, Simon Urbanek wrote:
Michael, On Mar 29, 2008, at 2:23 PM, Michael Braun wrote:
I am a recent convert from Linux to Mac (OS X 10.5.2 on a Mac Pro), and am trying to direct some output from compiled C code to the R.app GUI. For simple things, of course, I use Rprintf from the R API. But there are other cases (e.g., using the matrix print routines in GSL) for which Rprintf is inappropriate. When I was in Linux-land, I could direct the output to stdout with no problem (and I can still do that running R from a terminal window on OS X). But if I run my app under R.app, the output never makes it to the screen (naturally, because R.app is not standard output).
If we are to assist you, you should tell us more about your
application (the C code), because R.app *does* print stdout and
stderr (just try running system("ls")). Your application is very
likely doing something to prevent the output from being processed
(not flushing the output, printing unterminated lines, not allowing
R to process events...).
Cheers,
Simon
So, is there an output file that I can use in place of stdout that will get my output to the R.app GUI (and preferably, to a terminal window session as well)? Thanks! Michael Michael Braun Assistant Professor of Management Science (Marketing Group) MIT Sloan School of Management One Amherst St., E40-169 Cambridge, MA 02142 braunm at mit.edu 617-253-3436
_______________________________________________ R-SIG-Mac mailing list R-SIG-Mac at stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-mac
Michael Braun Assistant Professor of Management Science (Marketing Group) MIT Sloan School of Management One Amherst St., E40-169 Cambridge, MA 02142 braunm at mit.edu 617-253-3436
_______________________________________________ R-SIG-Mac mailing list R-SIG-Mac at stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-mac