# S3 method for default format(x, trim = FALSE, digits = NULL, nsmall = 0L, justify = c("left", "right", "centre", "none"), width = NULL, na.encode = TRUE, scientific = NA, big.mark = "", big.interval = 3L, small.mark = "", small.interval = 5L, decimal.mark = getOption("OutDec"), zero.print = NULL, drop0trailing = FALSE, …)
# S3 method for data.frame format(x, …, justify = "none")
# S3 method for factor format(x, …)
# S3 method for AsIs format(x, width = 12, …)
FALSE, logical, numeric and complex values are right-justified to a common width: if
TRUEthe leading blanks for justification are suppressed.
x. The default,
getOption("digits"). This is a suggestion: enough decimal places will be used so that the smallest (in magnitude) number has this many significant digits, and also to satisfy
nsmall. (For the interpretation for complex numbers see
0 <= nsmall <= 20.
defaultmethod: the minimum field width or
0for no restriction.
AsIs method: the maximum field width for non-character
NULL corresponds to the default
NAstrings be encoded? Note this only applies to elements of character vectors, not to numerical, complex nor logical
NAs, which are always encoded as
options("scipen")). Missing values correspond to the current default penalty.
prettyNum: that help page explains the details.
xcontaining character representations of the elements of the first argument
xin a common format, and in the current locale's encoding. For character, numeric, complex or factor
x, dims and dimnames are preserved on matrices/arrays and names on vectors: no other attributes are copied. If
xis a list, the result is a character vector obtained by applying
format.default(x, …)to each element of the list (after
unlisting elements which are themselves lists), and then collapsing the result for each element with
paste(collapse = ", "). The defaults in this case are
trim = TRUE, justify = "none"since one does not usually want alignment in the collapsed strings.
formatis a generic function. Apart from the methods described here there are methods for dates (see
format.Date), date-times (see
format.POSIXct)) and for other classes such as
format.data.frameformats the data frame column by column, applying the appropriate method of
formatfor each column. Methods for columns are often similar to
as.characterbut offer more control. Matrix and data-frame columns will be converted to separate columns in the result, and character columns (normally all) will be given class
format.factorconverts the factor to a character vector and then calls the default method (and so
format.AsIsdeals with columns of complicated objects that have been extracted from a data frame. Character objects and (atomic) matrices are passed to the default method (and so
widthdoes not apply). Otherwise it calls
toStringto convert the object to character (if a vector or list, element by element) and then right-justifies the result. Justification for character vectors (and objects converted to character vectors by their methods) is done on display width (see
nchar), taking double-width characters and the rendering of special characters (as escape sequences, including escaping backslash but not double quote: see
print.default) into account. Thus the width is as displayed by
print(quote = FALSE)and not as displayed by
cat. Character strings are padded with blanks to the display width of the widest. (If
na.encode = FALSEmissing character strings are not included in the width computations and are not encoded.) Numeric vectors are encoded with the minimum number of decimal places needed to display all the elements to at least the
digitssignificant digits. However, if all the elements then have trailing zeroes, the number of decimal places is reduced until
nsmallis reached or at least one element has a non-zero final digit; see also the argument documentation for
small.*etc, above. See the note in
digits >= 16. Raw vectors are converted to their 2-digit hexadecimal representation by
as.character. The internal code respects the option
getOption("OutDec")for the ‘decimal mark’, so if this is set to something other than
"."then it takes precedence over argument
format.infoindicates how an atomic vector would be formatted.
format(1:10) format(1:10, trim = TRUE) zz <- data.frame("(row names)"= c("aaaaa", "b"), check.names = FALSE) format(zz) format(zz, justify = "left") ## use of nsmall format(13.7) format(13.7, nsmall = 3) format(c(6.0, 13.1), digits = 2) format(c(6.0, 13.1), digits = 2, nsmall = 1) ## use of scientific format(2^31-1) format(2^31-1, scientific = TRUE) ## a list z <- list(a = letters[1:3], b = (-pi+0i)^((-2:2)/2), c = c(1,10,100,1000), d = c("a", "longer", "character", "string"), q = quote( a + b ), e = expression(1+x)) ## can you find the "2" small differences? (f1 <- format(z, digits = 2)) (f2 <- format(z, digits = 2, justify = "left", trim = FALSE)) f1 == f2 ## 2 FALSE, 4 TRUE