Re: [Rd] Feature request: txtProgressBar with ability to write to arbitrary stream

From: Duncan Murdoch <murdoch.duncan_at_gmail.com>
Date: Tue, 15 Mar 2011 10:57:16 -0400

On 15/03/2011 8:46 AM, Matt Shotwell wrote:
> Here's a temporary fix; reassign 'cat' in the environment of
> 'txtProgressBar':
>
> tpbEnv<- new.env()
> assign("cat", function(...) cat(file=stderr(),...), tpbEnv)
> environment(txtProgressBar)<- tpbEnv

I would suggest renaming the function as well. What's done above creates a new function called txtProgressBar, it doesn't modify the original one, so depending on scoping issues it may appear to only work sometimes. But if you did

stderrProgressBar <- txtProgressBar
environment(stderrProgressBar) <- tpbEnv

you'll get clear messages if it is out of scope when you try to use it.

Duncan Murdoch

> Best,
> Matt
>
>
> On 03/15/2011 05:37 AM, Andreas Borg wrote:
> > Hi all,
> >
> > I use txtProgressBar to monitor progress of large computations. What I
> > miss is the ability to redirect the progress bar to a stream other than
> > stdout, specifically to the message stream. This would be useful for
> > running Sweave scripts: When redirected to stderr, the bar could be
> > visible even though console output is diverted to the output file (and
> > there would be no cluttering of the generated latex).
> >
> > I'd suggest the following changes to txtProgressBar:
> > - a new argument 'file' (compare to 'cat') which defaults to stderr()
> > (there might be reasons to use stdout(), but I believe a progress bar is
> > mostly intended as a diagnostic tool and not for console output, which
> > is printed or saved in some cases).
> > - the calls to 'cat' that update the progress bar get 'file = file' as
> > additional argument so that output is redirected as desired.
> >
> > In case anyone from the core team is willing to incorparate this idea, I
> > attached the patch file for the necessary changes below.
> >
> > Best regards,
> >
> > Andreas
> >
> > 3c3
> > < width = NA, title, label, style = 1)
> > ---
> > > width = NA, title, label, style = 1, file=stderr())
> > 23c23
> > < cat(paste(rep.int(char, nb-.nb), collapse=""))
> > ---
> > > cat(paste(rep.int(char, nb-.nb), collapse=""), file = file)
> > 27c27
> > < "\r", paste(rep.int(char, nb), collapse=""), sep = "")
> > ---
> > > "\r", paste(rep.int(char, nb), collapse=""), sep = "", file = file)
> > 38c38
> > < cat("\r", paste(rep.int(char, nb), collapse=""), sep = "")
> > ---
> > > cat("\r", paste(rep.int(char, nb), collapse=""), sep = "", file = file)
> > 42c42
> > < "\r", paste(rep.int(char, nb), collapse=""), sep = "")
> > ---
> > > "\r", paste(rep.int(char, nb), collapse=""), sep = "", file = file)
> > 54c54
> > < cat(paste(c("\r |", rep.int(" ", nw*width+6)), collapse=""))
> > ---
> > > cat(paste(c("\r |", rep.int(" ", nw*width+6)), collapse=""), file =
> > file)
> > 59c59
> > < ), collapse=""))
> > ---
> > > ), collapse=""), file = file)
> > 68c68
> > < cat("\n")
> > ---
> > > cat("\n", file = file)
> >
>
>



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue 15 Mar 2011 - 15:06:03 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 16 Mar 2011 - 17:00:32 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive