1 autoformat <- function(xtab, zap = getOption("digits")) {
2 align(xtab) <- xalign(xtab)
3 digits(xtab) <- xdigits(xtab, zap = zap)
4 display(xtab) <- xdisplay(xtab)
8 xalign <- function(x, pad = TRUE) {
9 lr <- function(v) if(is.numeric(v)) "r" else "l"
11 is.2d <- length(dim(x)) == 2
12 alignment <- if(is.2d) sapply(as.data.frame(x), lr) else lr(x)
13 output <- if(is.2d && pad) c("l", alignment) else alignment
18 xdigits <- function(x, pad = TRUE, zap = getOption("digits")) {
22 v <- zapsmall(abs(v - floor(v)), zap)
23 dec <- if(any(v > 0)) max(nchar(v) - 2L) else 0L
30 is.2d <- length(dim(x)) == 2
31 decimals <- if(is.2d) sapply(as.data.frame(x), dig) else dig(x)
32 output <- if(is.2d && pad) c(0L, decimals) else decimals
37 xdisplay <- function(x, pad = TRUE) {
40 tp <- if(xdigits(v) == 0) "d" else "f"
47 is.2d <- length(dim(x)) == 2
48 disp <- if(is.2d) sapply(as.data.frame(x), type) else type(x)
49 output <- if(is.2d && pad) c("s", disp) else disp