R: A status bar at the R prompt that can be updated

TextStatusBar {R.utils} | R Documentation

## A status bar at the R prompt that can be updated

### Description

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.

### Usage

    TextStatusBar(fmt=paste("%-", getOption("width") - 1, "s", sep = ""), ...)

### Arguments

`fmt` | A `character` format string to be used by `sprintf`(). Default is a left-aligned string of full width.
`...` | Named arguments to be passed to `sprintf`() together with the format string.

### Details

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.

### Fields and Methods

Methods:

| `flush` | Flushes the output.
| `getLabel` | Gets the current value of a label.
| `newline` | Writes a newline.
| `popMessage` | Adds a message above the status bar.
| `setLabel` | Sets the value of a label.
| `setLabels` | Sets new values of given labels.
| `update` | Updates the status bar (visually).
| `updateLabels` | Sets the new values of given labels and updates the status bar.

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

### Author(s)

Henrik Bengtsson

### Examples

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # 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")

[Package R.utils version 2.7.0 Index]