Skip to content

Interactiveness

5 messages · Brian Ripley, Bjarni Juliusson, Tony Plate +1 more

#
Hi list!

I'm developing R integration for a project called Bioclipse at Uppsala 
University. The current implementation works by simply forking an R and 
sending it text (with some substitutions on it) down a pipe, getting the 
printed output back up another pipe. This of course works fine, except 
it runs into one problem: R finds a pipe on its stdin and decides to be 
"non-interactive", which means that as soon as the user makes a typo and 
causes an error, R exits.

I checked the source, and it's a couple of isatty()'s in the two files 
named system.c that are doing it. They are of course intended to be a 
feature, but in this case it causes us trouble. Would it be possible to 
get a command line switch to control this behaviour? I'm not sure pseudo 
terminals can be used portably, or can they? Are those few lines with 
the isatty's, which set R_Interactive to FALSE, the only places that 
need to be patched (besides adding the switch somewhere)? Should I send 
in a complete patch or is a request for functionality sufficient?

Lots of questions there, grateful for any answers! :-)


Bjarni
#
On Tue, 11 Dec 2007, Bjarni Juliusson wrote:

            
Actually, not so.  The default error handler for non-interactive use is to 
do that, but you can change it.
They can, and are e.g. by ESS (except on Windows, where there is already a 
switch).  I think you need to look a bit more carefully at what other 
projects do.
#
Prof Brian Ripley wrote:
Could you perhaps just point me in the right direction here? I really 
have no idea how to do this.

Also, what exactly does non-interactive mode imply, besides this default 
error handling behaviour?
It needs to be portable to Windows. I'll look into this possibility next.

Didn't mean to ask before I had done my homework. Thanks for your help!


Bjarni
#
Bjarni Juliusson wrote:
Specify a non-NULL error handler by doing something like this:
 > options(error=dump.frames)
See ?options (look for "error") and ?stop for more details.

-- Tony Plate
#
You might also find many of the tools provided in the 'session'  
package helpful for interacting with R in this way.

'session' package description:

Utility functions for interacting with R processes from external  
programs. This package includes functions to save and restore session  
information (including loaded packages, and attached data objects),  
as well as functions to evaluate strings containing R commands and  
return the printed results or an execution transcript.

-Greg
On Dec 11, 2007, at 1:18PM , Tony Plate wrote: