[R] R script to start session (without automatically finishing)

Philipp Fechteler philipp.fechteler at hhi.fraunhofer.de
Fri Jan 4 09:37:38 CET 2008


Hello again

I think now I can refine my problem: I want to run R scripts 
non-interactively in batch-mode or invoked in Perl scripts, with 
interactive rgl windows (responding to my mouse actions). Ideally the R 
script finishes when I close the rgl window and executes some last 
commands in the R script.

When R is started non-interactively, by using Rscript or (in Linux) 
piping the input to the R process STDIN, then the rgl windows are not 
interactive. The only difference in the R environment I can find is, 
that the command interactive() returns TRUE only, when I have invoked R 
on the command line. In all other cases I have tried, this command 
returns FALSE.

Does anybody now, how this interactive() function is working? In which 
way does it determine if R is running interactively or in batch mode? 
And how can I modify that behaviour or how can I simulate the 
interactive environment from a (Perl-) script calling my R script?

Here is my Perl script approach for running R non-interacively, but 
non-successful simulating an interactive environment:

use warnings;
use strict;
use English;
use IPC::Open2;

my @rScript =
(
   "library(rgl)\n",
   "rgl.open()\n",
   "rgl.bg(color=c(\"white\"))\n",
   "rgl.lines(  c(0, 1, 1, 1, 1, 0, 0, 0),
       c(0, 0, 0, 1, 1, 1, 1, 0),
       c(0, 0, 0, 0, 0, 0, 0, 0),
       color=\"black\", size=2 )\n",
   "rgl.lines(  c(0, 1, 1, 1, 1, 0, 0, 0),
       c(0, 0, 0, 1, 1, 1, 1, 0),
       c(1),
       color=\"black\", size=2 )\n",
   "rgl.lines(
       c(0, 0, 1, 1, 1, 1, 0, 0),
       c(0, 0, 1, 1, 0, 0, 1, 1),
       c(0, 1, 0, 1, 0, 1, 0, 1),
       color=\"black\", size=2 )\n"
);


my $pid = open2( ">&STDOUT", my $R, "/usr/bin/R", 
"--slave","--quiet","--vanilla")
   or die "ERROR: can't open2 R: $ERRNO";
print $R @rScript;
getc();
print $R "q()\n";



Thank's for help.

Greetings
Philipp





Prof Brian Ripley wrote:
> On Thu, 3 Jan 2008, Philipp Fechteler wrote:
> 
>> Hello Mr Ripley
>>
>> Prof Brian Ripley wrote:
>>> So you have to write a script that will not terminate until you 
>>> 'press a button or something like this'.  That's easy to do, but as 
>>> you haven't told us your OS.  E.g. on Windows, call winDialogString 
>>> at the end.
>>>
>>
>> Thank you for helping. I am running on Linux. But I think the 
>> getchar() like call should be inside the R script. So is there 
>> something like this in R or any loadable module, e.g. a function 
>> sleeping until a key is pressed and returning the key code?
> 
> See ?readline, and from Rscript scan("stdin", "", n=1).
> 

The scan() function is quite near on my desired solution. But it
inhabits the following problem. The rgl window pops up showing the data
I want to see, but its frozen (due to the following scan() call). So I
successfully see the data visualization as long as I want, but its a
static view, the mouse-interactivity is lost (changing the viewing
angle, zoom etc.).

>
> You can't do this totally portably: R might not be connected to a 
> terminal (even in interactive use: think ESS). You could also use a Tk 
> widget to give your users a button to press.
> 

Is there anywere a short tutorial, how to mix R scripts with Tk?

But the best would be to change the upper approach, so that the rgl
window just keeps its interactivity.

Thank you.
Philipp



>>
>>
>> Greetings
>> Philipp
>>
>>
>>> On Fri, 21 Dec 2007, Philipp Fechteler wrote:
>>>
>>>> Hello R friends
>>>>
>>>> I am quite impressed by the power of R, I am using it only since some
>>>> weeks now. But its visualizing capabilities are outstanding!
>>>>
>>>> But one thing I couldn't solve: I have programs producing lots of data,
>>>> most times 3D. In R I am using the library rgl to visualize nicely the
>>>> 3D data.
>>>>
>>>> What I would like to do is to write R scipts which read in a data file
>>>> and show me the 3D rgl plot. So that on the command line I just call my
>>>> newly written R script, which pops up the rgl window. This session
>>>> should run until I close the rgl window or press a button or something
>>>> like this.
>>>>
>>>> Currently, I can write R scripts
>>>> - using Rscript or
>>>> - http://tolstoy.newcastle.edu.au/R/help/04/05/0500.html
>>>> But both approaches contain the problem that the rgl window pops up for
>>>> just a moment, and then the program terminates.
>>>>
>>>>
>>>> Does any body has an idea, what to do? Help would be very appreciated.
>>>>
>>>> Thank's a lot and ... Marry Christmas + Happy New Year
>>>>
>>>> Philipp
>>>>
>>>>
>>>> ________________________________________________________________________ 
>>>>
>>>> Dipl.-Ing. Philipp Fechteler
>>>> Department Image Processing
>>>> Fraunhofer Institute for Telecommunications
>>>> Heinrich-Hertz-Institut (HHI)
>>>> Einsteinufer 37
>>>> 10587 Berlin, Germany
>>>> Phone    +49 30 31002 616
>>>> Fax    +49 30 392 72 00
>>>> Email    philipp.fechteler at hhi.fraunhofer.de
>>>> WWW    http://iphome.hhi.de/fechteler
>>>> ________________________________________________________________________ 
>>>>
>>>
>>>
>>
>>
>>
> 


-- 
________________________________________________________________________
Dipl.-Ing. Philipp Fechteler
Department Image Processing
Fraunhofer Institute for Telecommunications
Heinrich-Hertz-Institut (HHI)
Einsteinufer 37
10587 Berlin, Germany
Phone	+49 30 31002 616
Fax	+49 30 392 72 00
Email	philipp.fechteler at hhi.fraunhofer.de
WWW	http://iphome.hhi.de/fechteler
________________________________________________________________________



----
Visit us at

FOE 2008 (8th Fiber Optics Expo) / Tokio Big Sight, Japan / 16 - 18 January 2008 / Booth 2 - 50
http://www.foe.jp/english




More information about the R-help mailing list