[R] capturing stderr/stdout

Sundar Dorai-Raj sundar.dorai-raj at pdf.com
Fri Nov 21 18:09:30 CET 2008


Hi, Prof. Ripley,

Thanks for the reply. Mostly I want to capture output as it is written 
to the stream. For example, I quite often do the following to view the 
progress of a log file from a computationally intensive script.

1. Open a console and type:

Rscript script.R >& script.log

which directs both stdout and stderr to "script.log"

2. Open another console and type:

tail -f script.log

This way I get both the script's log file and its current progress.

I guess my question is: Is there a way to accomplish the "tail -f" 
command in R?

Thanks,

--sundar

Prof Brian Ripley said the following on 11/20/2008 11:43 PM:
> 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.
> 
>



More information about the R-help mailing list