Jon Clayden
2008-Sep-24 12:36 UTC
[Rd] R --interactive and readline() creates infinite loop
Dear all, I have asked before, in R-help [1], about a way to create an interactive session in which commands are taken from a file or standard input - like R CMD BATCH but additionally allowing user input - but there was no response to that question, and the workarounds that I have found (using "expect", creating a temporary .Rprofile) are ugly and problematic. With the appearance of the --interactive flag in R 2.7.0 I thought this might become possible, but it not only does not behave as I would expect, it appears to go into an infinite loop, and uses 100% CPU until killed. $ echo 'print(readline("Input:"))' | R --no-save --quiet > print(readline("Input:")) Input:[1] "" > [no interactivity] $ echo 'print(readline("Input:"))' | R --no-save --quiet --interactive [no response at all] This behaviour remains in the latest alphas of R 2.8.0. My platform is Mac OS X.5.5 on Intel Core 2 Duo. I assume, given this outcome, that this is not the intended use of -- interactive, but I still wonder if there is any way to achieve an interactive session based on a predefined set of commands without writing a completely new front-end (overkill, surely?). Any guidance would be appreciated. Regards, Jon [1] http://finzi.psych.upenn.edu/R/Rhelp02a/archive/117412.html -- Jonathan D. Clayden, Ph.D. Research Fellow Radiology and Physics Unit UCL Institute of Child Health 30 Guilford Street LONDON WC1N 1EH United Kingdom t | +44 (0)20 7905 2708 f | +44 (0)20 7905 2358 w | www.homepages.ucl.ac.uk/~sejjjd2/
John Chambers
2008-Sep-25 13:13 UTC
[Rd] R --interactive and readline() creates infinite loop
For an alternative approach to your original goal, take a look at demoSource() in the SoDA package from CRAN. It's a bit tedious to set up (see the Details section of the help file) but uses standard R sessions to mix lines from a demo file and interactive input. John Jon Clayden wrote:> Dear all, > > I have asked before, in R-help [1], about a way to create an > interactive session in which commands are taken from a file or > standard input - like R CMD BATCH but additionally allowing user input > - but there was no response to that question, and the workarounds that > I have found (using "expect", creating a temporary .Rprofile) are ugly > and problematic. > > With the appearance of the --interactive flag in R 2.7.0 I thought > this might become possible, but it not only does not behave as I would > expect, it appears to go into an infinite loop, and uses 100% CPU > until killed. > > $ echo 'print(readline("Input:"))' | R --no-save --quiet > > print(readline("Input:")) > Input:[1] "" > > > [no interactivity] > > $ echo 'print(readline("Input:"))' | R --no-save --quiet --interactive > [no response at all] > > This behaviour remains in the latest alphas of R 2.8.0. My platform is > Mac OS X.5.5 on Intel Core 2 Duo. > > I assume, given this outcome, that this is not the intended use of > --interactive, but I still wonder if there is any way to achieve an > interactive session based on a predefined set of commands without > writing a completely new front-end (overkill, surely?). > > Any guidance would be appreciated. > > Regards, > Jon > > [1] http://finzi.psych.upenn.edu/R/Rhelp02a/archive/117412.html > > > -- > Jonathan D. Clayden, Ph.D. > Research Fellow > Radiology and Physics Unit > UCL Institute of Child Health > 30 Guilford Street > LONDON WC1N 1EH > United Kingdom > > t | +44 (0)20 7905 2708 > f | +44 (0)20 7905 2358 > w | www.homepages.ucl.ac.uk/~sejjjd2/ > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >
hadley wickham
2008-Sep-25 13:47 UTC
[Rd] R --interactive and readline() creates infinite loop
> I assume, given this outcome, that this is not the intended use of > --interactive, but I still wonder if there is any way to achieve an > interactive session based on a predefined set of commands without writing a > completely new front-end (overkill, surely?).When you say an interactive session, do you mean that the output should be identical to what would have happened if you had copied and pasted the code in to an R session? I'm working on some code that allows you to do this, based around parse and eval. Hadley -- http://had.co.nz/