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@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to