On 14 October 2010 at 08:49, Saptarshi Guha wrote:
| Hello,
| I have this script which will be invoked as
| 
| Rscript a.r < a.r
| 
| a.r follows
| 
| #!/usr/bin/Rscript --vanilla
| f=file("stdin")
| while(TRUE){
|     y=readLines(f,n=1,warn=TRUE)
|   if(length(y)==0) break else print(y)
| }
| 
| 
| But it only reads one line from a.r
| How can I read line by line from standard input?

If you can substitute in r (from littler) for Rscript, then you get proper
behaviour.  Here is an old example from littler:

   $ ls -l /usr/bin | awk '!/^total/ {print $5}' | \
       r -e 'fsizes <- as.integer(readLines()); print(summary(fsizes))' | \
       tail -2
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max.
       1     1720    10900   108000    39200 11100000
   $

This uses awk to get the file size from ls, and then runs R's summary() over
it.  For some reason, readLines() now echos back to the screen which is why I
added the 'tail -2' at the end.

Dirk

-- 
Dirk Eddelbuettel | [email protected] | http://dirk.eddelbuettel.com

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to