[R-SIG-Mac] Directing output to R.app GUI from compiled C code

Ryan Hafen rhafen at stat.purdue.edu
Sun Mar 30 04:48:25 CEST 2008


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



More information about the R-SIG-Mac mailing list