[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