Re: [R] cat and positioning of the output

From: Philippe Grosjean <>
Date: Fri 30 Jun 2006 - 06:53:44 EST

Dan Gunter wrote:

> =?ANSI_X3.4-1968?Q?J=3Frn_Schulz?= wrote:

>>Hello R users!
>>I like to use cat in a loop. I know, loops are not the best way in R ... but
>>my question: It is possible to overwrite the expression "Reading row: i" in
>>each iteration of the loop (print out in the below loop on the screen) or
>>more particulary to overwrite the counter "i".
>>for(i in 1:header$M){
>> cat("Reading row: ", i)
>> SparseIndex[[i]] <- readBin( con, integer(), n=MIndexNumber[i], size=4 )
>> SparseSignal[[i]] <- readBin( con, numeric(), n=MIndexNumber[i], size=4 )
>>Many thanks
>>J?rn Schulz.
> On a UNIX terminal, adding '\r' will cause the cursor to go back to the 
> beginning of the same line. I can't speak for Windows.
> e.g.
> for ( i in 1:10 ) { cat("Number",i,"\r"); Sys.sleep(1) }; cat("\n")
> -Dan

It works, but I don't like much strange things that can happen with "\r" because the caret is located at the beginning of the line. Look at what happens if you forgot the latests 'cat("\n")'. Also, note that for RGui under windows, you must use flush.console(). So:

 > for (i in 1:10) {
 >    cat("Number",i,"\r")
 >    flush.console()
 >    Sys.sleep(1)
 > }
 > cat("\n")

does the job. The alternative is to use "\b" repeatedly, which is done in progress() indeed.

Philippe Grosjean mailing list PLEASE do read the posting guide! Received on Fri Jun 30 06:57:50 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Fri 30 Jun 2006 - 18:13:21 EST.

Mailing list information is available at Please read the posting guide before posting to the list.