[R] cat and positioning of the output
Philippe Grosjean
phgrosjean at sciviews.org
Thu Jun 29 22:53:44 CEST 2006
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.
Best,
Philippe Grosjean
More information about the R-help
mailing list