pillar provides tools for styling columns of data, artfully using colour and unicode characters to guide the eye.
# pillar is installed if you install the tidyverse package:
install.packages("tidyverse")
# Alternatively, install just pillar:
install.packages("pillar")
pillar is a developer-facing package that is not designed for
end-users. It powers the print()
and format()
methods for tibbles. It also
and defines generics and helpers that are useful for package authors who
create custom vector classes (see https://github.com/krlmlr/awesome-vctrs#readme for
examples) or custom table classes (like dbplyr or sf).
library(pillar)
<- 123456789 * (10^c(-3, -5, NA, -8, -10))
x pillar(x)
#> <pillar>
#> <dbl>
#> 123457.
#> 1235.
#> NA
#> 1.23
#> 0.0123
tbl_format_setup(tibble::tibble(x))
#> <pillar_tbl_format_setup>
#> <tbl_format_header(setup)>
#> # A tibble: 5 × 1
#> <tbl_format_body(setup)>
#> x
#> <dbl>
#> 1 123457.
#> 2 1235.
#> 3 NA
#> 4 1.23
#> 5 0.0123
#> <tbl_format_footer(setup)>
The primary user of this package is tibble, which lets pillar
do all the formatting work. Packages that implement a data type to be
used in a tibble column can customize the display by implementing a
pillar_shaft()
method.
library(pillar)
<- vctrs::new_vctr(9:11 * 0.01, class = "percent")
percent
<- function(x, ...) {
pillar_shaft.percent <- format(vctrs::vec_data(x) * 100)
fmt new_pillar_shaft_simple(paste0(fmt, " ", style_subtle("%")), align = "right")
}
pillar(percent)
#> <pillar>
#> <percent>
#> 9 %
#> 10 %
#> 11 %
See vignette("pillar", package = "vctrs")
for
details.
pillar provides various extension points for customizing how a tibble-like class is printed.
<- vctrs::new_data_frame(list(a = 1:3), class = c("my_tbl", "tbl"))
tbl
<- function(x, ...) {
tbl_sum.my_tbl c("Hello" = "world!")
}
tbl#> # Hello: world!
#> a
#> <int>
#> 1 1
#> 2 2
#> 3 3
See vignette("extending", package = "pillar")
for a
walkthrough of the options.
Please note that the pillar project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.