[R] capturing stderr/stdout

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri Nov 21 08:43:50 CET 2008


I am not sure what the issue is here. Do you want to capture both stderr 
and stdout (use 2>1 in the command with an sh-like shell), or is the
problem that you don't get immediate output?

The latter is a Perl issue: you need to circumvent output buffering.
See e.g

http://perl.plover.com/FAQs/Buffering.html

Sundar Dorai-Raj wrote:
> Hi,
> 
> I have an application in perl that prints some output to either stderr 
> or stdout.
> 
> Here's an example:
> 
> # tmp.pl
> print STDERR "starting iterator\n";
> for(my $i = 0; $i < 1000000; $i++) {
>   print $i . "\n";
> }
> 
> # tmp.R
> con <- pipe("perl tmp.pl")
> r <- readLines(con, n = -1)
> close(con)
> 
> However, the second line stalls until the perl for-loop finishes. What I 
> would like is to process each line as it comes. E.g. something like:
> 
> while(TRUE) {
>   r <- readLines(con, n = 1) # read one line
>   if(r == "10000") print(r)
>   if(length(r) == 0) break
> }
> 
> Of course, this won't work since I'm not calling readLines 
> appropriately. Answers must work on Windows but may include cygwin 
> utilities if necessary. Any advice would be appreciated. Version info at 
> the end if it matters.
> 
> Thanks, --sundar
> 
> 
>  > version
>                _
> platform       i386-pc-mingw32
> arch           i386
> os             mingw32
> system         i386, mingw32
> status
> major          2
> minor          8.0
> year           2008
> month          10
> day            20
> svn rev        46754
> language       R
> version.string R version 2.8.0 (2008-10-20)
> 
> ______________________________________________
> R-help at r-project.org 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.


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list