Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Using progress bars in R scripts can provide valuable timing feedback during development and additional polish to final products. winProgressBar
and setWinProgressBar
are the primary functions for creating progress bars in R.
Progress bars, and progress indicators in general, are relatively uncommon in R programming. This makes sense, as they can add bloat and, being design elements, they generally fall into the classification of “nice but not necessary”. However, during development, especially when using loops, progress bars can a cleaner way of tracking loop progress than, for example, printing iteration numbers. And for programmers who prepare scripts or packages for non-programmers, they add feedback that users have come to expect from other software.
To add progress bars in R scripts use the winProgressBar
and setWinProgressBar
functions. For non-Windows users there’s also a very similar Tcl/Tk version (tkProgressBar
and settkProgressbar
); depending on your current set up, you may need to install the tcltk library to use it.
Setting up a progress indicator to track the progress of a loop is very straightforward. First, initialize the display:
pb < - winProgressBar(title="Example progress bar", label="0% done", min=0, max=100, initial=0)
Use the title
and label
options to set the style of the display. The min
and max
options should use whatever values are most applicable to your task, but in most cases this will be displaying a percentage so a range of 0 to 100, starting at 0, makes sense.
After initializing the progress indicator, add your loop code and update the progress bar by calling the setWinProgressBar
function at the end of each loop:
for(i in 1:100) {
Sys.sleep(0.1) # slow down the code for illustration purposes
info <- sprintf("%d%% done", round((i/100)*100))
setWinProgressBar(pb, i/(100)*100, label=info)
}
Once the loop is exited, close the progress bar window:
close(pb)
Here is a snapshot of the progress indicator in action:
To track the progress of an entire script or program, you just need to place the initializing function (winProgressBar
) at the beginning of the code and do updates via setWinProgressBar
at key points within the flow of your program. For example, if the first task your code performs usually takes about 10% of the total time required, set the value to 10% after that task completes.
If a popup progress bar doesn't work for your task, there is a minimalist option, txtProgressBar
, that by default draws a line in the console. It also allows for some fun customizations:
ProgrammingR offers two ways for you to stay up to date. To be notified when new articles and book reviews are posted, subscribe to the ProgrammingR articles feed. To be notified when new R-based job listings are posted, subscribe to the ProgrammingR jobs feed. You may also want to post an R consultant listing, hire an R consultant, or ask a question in the forums.
The post Progress bars in R using winProgressBar appeared first on ProgrammingR.
More like this:
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.