TextStatusBar | R Documentation |
Package: R.utils
Class TextStatusBar
Object
~~|
~~+--
TextStatusBar
Directly known subclasses:
public static class TextStatusBar
extends Object
A status bar at the R prompt that can be updated.
TextStatusBar(fmt=paste("%-", getOption("width") - 1, "s", sep = ""), ...)
fmt |
A |
... |
Named arguments to be passed to |
A label with name hfill
can be used for automatic horizontal
filling. It must be numeric
and be immediate before a string
label such that a hfill
label and the following string label
together specifies an sprintf format such as "%*-s"
.
The value of hfill
will be set such that the resulting status
bar has width equal to getOption("width")-1
(the reason for the
-1 is to prevent the text status bar from writing into the next line).
If more than one hfill
label is used their widths will be
uniformly distributed. Left over spaces will be distributed between
hfill
labels with initial values of one.
Methods:
flush | - | |
getLabel | - | |
newline | - | |
popMessage | - | |
setLabel | - | |
setLabels | - | |
update | - | |
updateLabels | - | |
Methods inherited from Object:
$, $<-, [[, [[<-, as.character, attach, attachLocally, clearCache, clearLookupCache, clone, detach, equals, extend, finalize, getEnvironment, getFieldModifier, getFieldModifiers, getFields, getInstantiationTime, getStaticInstance, hasField, hashCode, ll, load, names, objectSize, print, save
Henrik Bengtsson
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Read all HTML files in the base package
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
path <- system.file(package="base")
files <- list.files(path, recursive=TRUE, full.names=TRUE)
files <- files[sapply(files, FUN=isFile)]
nfiles <- length(files)
cat(sprintf("Reading %d files in %s:\n", nfiles, path))
# Create a status bar with four labels
sb <- TextStatusBar("File: %-*s [%3.0f%% %7.0f bytes %-8s]",
hfill=1, file="", progress=0, nbytes=0L, time="")
nbytes <- 0L
for (kk in seq_len(nfiles)) {
file <- files[kk]
# Update the status bar
if (sb) {
setLabel(sb, "progress", 100*kk/nfiles)
if (kk %% 10 == 1 || kk == nfiles)
setLabel(sb, "file", substr(basename(file), 1, 44))
size <- file.info(file)$size
# popMessage() calls update() too
popMessage(sb, sprintf("Processing %s (%.2fkB)",
basename(file), size/1024))
flush(sb)
}
# Read the file
bfr <- readBin(file, what="raw", n=size)
nbytes <- nbytes + size
# Emulate a slow process
if (interactive()) Sys.sleep(rexp(1, rate=60))
# Update the status bar
if (sb) {
setLabel(sb, "nbytes", nbytes)
setLabel(sb, "time", format(Sys.time(), "%H:%M:%S"))
update(sb)
}
}
setLabel(sb, "file", "<done>")
update(sb)
cat("\n")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.