## Flexible Formatting

## Usage

    formatC(x, digits = NULL, width = max(0, digits) + 1,
            format = NULL, flag = "", mode = NULL)
    format.char(x, width = NULL, flag = "-")

## Arguments

`x` | an atomic numerical or character object, typically a vector of real numbers.
`digits` | the desired number of digits after the decimal point (`format = "f"`) or significant digits (`format = "g"`, `= "e"` or `= "fg"`). Default: 2 for integer, 4 for real numbers. If less than 0, the C default of 6 digits is used.
`width` | the total field width; `width < 0` means left justify the number in this field (equivalent to `flag ="-"`). It is possible that the result will be longer than this, but that should only happen in reasonable cases.
`format` | equal to `"d"` (for integers), `"f"`, `"e"`, `"E"`, `"g"`, `"G"`, `"fg"` (for reals), or `"s"` (for strings). `"f"` gives numbers in the usual ``xxx.xxx'' format; `"e"` and `"E"` give ``n.dddenn'' or ``n.dddEnn'' (scientific format); `"g"` and `"G"` put `x[i]` into scientific format only if it saves space to do so. `"fg"` uses fixed format as `"f"`, but `digits` as number of significant digits. Note that this can lead to quite long result strings, see examples below.
`flag` | format modifier as in Kernighan and Ritchie, 2nd ed., page 243. `"0"` pads leading zeros; `"-"` does left adjustment, others are `"+"`, `" "`, and `"#"`.
`mode` | `"double"` (or `"real"`), `"integer"` or `"character"`. Default: Automatic.

## Value

A character object of same size and attributes as `x`. Unlike `format`, each number is formatted individually. A for loop over each element of `x`, calling `sprintf(...)` is done in the C function `str_signif`.

`format.char(x)` and `formatC`, for character `x`, do simple (left or right) padding with white space.

## Author(s)

Originally written by Bill Dunlap, later much improved by Martin Maechler, it was adapted for R by Friedrich Leisch.

## See Also

`format`.

## Examples

    xx  <- pi * 10^(-5:4)
    options(digits = 4)   # only for format
    cbind(format(xx), formatC(xx))
    cbind(formatC(xx, wid = 9, flag = "-"))
    cbind(formatC(xx, dig = 5, wid = 8, format = "f", flag = "0"))

    format.char(c("a", "Abc", "no way"), wid = -7)  # <=> flag = "-"
    formatC(    c("a", "Abc", "no way"), wid = -7)  # <=> flag = "-"
    formatC(c((-1:1)/0,c(1,100)*pi), wid=8, dig=1)

    xx <- c(1e-12,-3.98765e-10,1.45645e-69,1e-70,pi*1e37,3.44e4)
    ##       1        2             3        4      5       6
    formatC(xx)
    formatC(xx, format="fg")       # special "fixed" format.
    formatC(xx, format="f", dig=80)#>> also long strings

[Package Contents]