num()
objects no longer perform type checks. This allows, e.g., multiplying a num()
with a logical (#630, #632).The default for the pillar.min_title_chars
option has been bumped up to 20 characters so that title truncuation only affects very long variables. Use options(pillar.min_title_chars = 5)
to reset to the previous default (#582, #620).
Use info bullets to format details (#582, #617, #627, #635).
colonnade()
, extra_cols()
and squeeze()
are now hard-deprecated (#272, #374, #631).Show colnames()
hint only when needed (tidyverse/tibble#1488, #622).
Fix printing of very small numbers (#615, #619).
Shortened list columns are also shown with a subtle style (#628, #634).
Avoid warning with S4 character classes (tidyverse/tibble#1367, #625).
Fix method consistency, checked by R-devel (#633).
Polish ?pillar_options
(#583).
Fix typo & missing quote in digits vignette stub (@gavinsimpson, #629).
pillar.advice
option to turn off advice in the footer, see ?pillar_options
. Now off by default in non-interactive mode (#577).Column names that are abbreviated in the header gain a footnote and are printed in full in the footer (#483),
after the extra columns (#548). If a column name in the header is abbreviated, all backticks are removed (#525). The new "pillar.superdigit_sep"
option that determines the string used to separate footnote from column name in the footer (#553).
The default value of the pillar.min_title_width
option is changed to 5. This means that effectively the width of a pillar is decided only by the data. Use options(pillar.min_title_width = 15)
to restore the previous default, see also ?pillar_options
for details (#531).
Offer advice in the footer on how to print all columns or rows (#567).
Avoid aligning NA
inside quotes for very short character vectors (#562).
Pick up "pillar_focus"
attribute on printing to define focus columns (#549).
New ctl_new_rowid_pillar()
generic and default method for customizing the appearance of row IDs (#260, #550, @nbenn).
Fix printing of Surv
and Surv2
objects (#561).
Fix wording for corner case max_extra_cols = 1
(#535).
Remove excess underlines for bit64::integer64()
data of different magnitude (#517, #529).
ctl_new_pillar_list()
is documented on a separate help page (#516).
Remove outdated detail in ?tbl_sum
(@IndrajeetPatil, #565).
Drop crayon dependency (#559).
Import ellipsis from rlang (#554).
Skip test that requires lubridate if it's not installed (#505, @MichaelChirico).
Soft-deprecate colonnade()
, squeeze()
and extra_cols()
(#496).
Require rlang 1.0.1 (#512).
colonnade()
is now soft-deprecated (#485).expect_known_display()
and is_vector_s3()
are now deprecated (#460, #501).new_pillar()
deprecates extra
argument (#497).focus
argument to tbl_format_setup()
are kept in their original place and shown with the maximum width and with the "type" component underlined (#465).s3_register()
to use new implementation from rlang, this fixes CRAN checks related to scale_type()
(#462).pillar()
use only as much width as required when printing (#484).ctl_new_pillar_list()
, supersedes ctl_new_compound_pillar()
(#433).num(fixed_exponent = ...)
is now represented with the fixed exponent in the pillar header, and in the title in ggplot2 (#307).tbl_format_setup()
gains focus
argument that expects a character vector of column names. Focus columns are moved to the front and separated from the main columns by a subtle vertical line (#384).scale_x_num()
and scale_y_num()
. If a column created with num()
is used in a ggplot, the x and y scale will be formatted automatically according to to the specification (#400, #404).new_pillar_shaft_simple()
gains short_formatted
argument that contains the data to be used if horizontal space is insufficient (#389).obj_sum()
method returns abbreviation in attribute of return value (#390).getOption("width")
(#432).nanotime::nanotime()
classes (#378, #380).?num
and ?char
now point to tibble (#382).NAMESPACE
for own methods for classes from other packages."pillar_vertical"
class with glue::as_glue()
(#279).num()
requires an integerish digits
argument (#362).pillar.print_max
, pillar.print_min
, pillar.width
and pillar.max_extra_cols
are now queried before the corresponding tibble.
or dplyr.
options are consulted, the latter will be soft-deprecated in pillar v2.0.0 (#353).pillar.bidi
option. When active, control characters are inserted to improve display of data with right-to-left text (#333).pillar.max_footer_lines
option (default: 7) allows controlling the maximum number of footer lines shown. It is applied in addition to the existing tibble.max_extra_cols
option (#263).getOption("tibble.width") > getOption("width")
(#344).width
. This simplifies the implementation of custom pillar_shaft()
methods (#347).num()
gains extra_sigfig
argument to automatically show more significant figures for numbers of the same magnitude with subtle differences (#97).print.tbl()
and format.tbl()
support the max_extra_cols
and max_footer_lines
arguments that override the corresponding options (#360).print.tbl()
and format.tbl()
maps the now deprecated n_extra
argument to max_extra_cols
for consistency (#360).bit64::integer64()
(#319).?pillar_options
(#339).obj_sum()
no longer calls type_sum()
for vectors since pillar v1.6.1, this is now documented (#321).vctrs::vec_proxy()
and vctrs::vec_restore()
(#322).attr(exact = TRUE)
everywhere.is_vector_s3()
is no longer generic (#181).vec_proxy()
and vec_restore()
(#316).obj_sum()
no longer includes shape twice (#315).num()
and char()
offer a flexible way to customize the display of numeric and character columns (#191, #84)."pillar.max_dec_width"
option (#308).format_type_sum.AsIs()
avoids the need to implement your own format_type_sum()
method (#286).align()
gains space
argument to control the character used for filling (#285).DEBUGME
environment variable is set.vignette("numbers")
and vignette("digits")
(#308).format.pillar_shaft_simple()
requires "na"
attribute and no longer defaults to pillar_na()
(#273).format_glimpse()
(#177)."cli.num_colors"
option to 1 (#269).obj_sum()
now always returns a string. pillar_shaft.list()
iterates over its elements and calls obj_sum()
for each (#137).
Breaking: print.pillar()
and print.pillar_ornament()
now show <pillar>
<pillar_ornament>
in the first line (#227, #228).
pillar has been re-licensed as MIT (#215).
New size_sum()
generic (#239).
New ctl_new_pillar()
and ctl_new_compound_pillar()
used via print.tbl()
, format.tbl()
and tbl_format_setup.tbl()
(#230).
New new_pillar()
low-level constructor (#230).
New new_pillar_component()
and pillar_component()
(#230).
New articles vignette("extending")
and vignette("printing")
(#251).
All printing code has been moved from tibble to pillar (#179), including glimpse()
(#234). This concentrates the printing code in one package and allows for better extensibility.
New experimental generics tbl_format_setup()
, tbl_format_header()
, tbl_format_body()
and tbl_format_footer()
(#179).
Move definition of tbl_sum()
to this package (#179).
Improve formatting for "Surv"
and "Surv2"
classes from the survival package (#199).
Vectors of the vctrs_unspecified()
class are formatted better (#256).
Arrays are now formatted by showing only their first slice (#142).
Avoid wrapping extra column names with spaces (#254).
Now using debugme to simplify understand the complex control flow, see vignette("debugme")
(#248).
New format.pillar_ornament()
(#228).
Using testthat 3e (#218).
Avoid pillar.bold option in most tests (#216).
Change internal storage format for colonnade()
and extra_cols()
(#204).
New pillar.min_chars
option allows controlling the minimum number of characters shown for a character column (#178, @statsmaths).
bit64::integer64()
columns are now formatted the same way as numeric columns (#175).
New align()
to support easy alignment of strings within a character vector (existing function exported by @davidchall, #185).
pillar_shaft()
, format_type_sum()
and extra_cols()
issue a warning if dots are unused.
new_pillar_title()
and new_pillar_type()
warn if ...
is not empty.
Use lifecycle package.
Remove compatibility code for R < 3.3.
obj_sum()
uses vctrs::vec_size()
internally.
is_vector_s3.default()
is soft-deprecated and no longer used. Please ensure that vctrs::vec_is()
is TRUE
for your class.
Rely on vctrs for type abbreviations.
new_pillar_shaft_simple()
gains na
argument to control appearance of NA
values.
String columns are quoted if at least one value needs quotes (#171).
Apply subtle style to list_of
columns (#172).
Fix formatting if mantissa is very close to 1 (#174).
Use as.character()
instead of as_character()
.
Remove compatibility with testthat < 2.0.0.
List columns are shown with their perceived dimensions, which may be different from those stored in the "dim"
attribute. Regression introduced in 1.4.0 (#167).
Add ellipsis to vec_ptype_abbr()
method.
type_sum.vctrs_vctr()
that also led to a NOTE in R CMD check
.vec_is()
at runtime instead of during .onLoad()
(#163, @lionel-).type_sum()
forwards to vctrs::vec_ptype_abbr()
(#134). This makes sure that list_of
columns (for values of the same type) are properly displayed. The value returned for factor
and complex
remains unchanged, because this will change in vctrs.class
argument to new_pillar_shaft()
deprecates the existing subclass
argument. Passing a subclass
argument leads to a warning once per session (#157).[,0]
and an empty shaft (#149).squeeze()
is now faster (because the width computation in pillar_shaft.numeric()
now uses more arithmetics instead of string concatenation). Further speedups may require implementation of crucial parts in C (#147).colonnade()
, and styling is implemented manually (#133, @jimhester).pillar_
prefix (#156).NA
in names is no longer escaped with backticks.format()
method (tidyverse/tibble#448).Unknown data types are formatted using format()
, not as.character()
(#120).
Multi-tier colonnades can always fill the last tier, even if the width isn't a proper multiple of getOption("width")
. (Example: options(width = 80, tibble.width = 200)
will print a wide tibble in three tiers, each 80 characters wide, with a total width of 240 characters.)
Fixed mixed formatting (showing some pillars with maximum, and some with minimum width). If a pillar's minimum width is smaller than getOption("width")
, it is shown nevertheless, abbreviated with dots if necessary.
format_type_sum()
gains width
argument (#73).Printing large multi-tier colonnades is much faster, the code that distributes pillars over tiers uses a much simpler and much faster algorithm (tidyverse/tibble#422).
Printing is now faster overall, because less work is done for formatting in "subtle" style (gray of a fixed level), and because fansi::strip_sgr()
is used instead of crayon::strip_style()
.
Slightly faster printing of colonnades by reusing an intermediate result.
pillar()
no longer adds backticks if title
is non-syntactic.
colonnade()
supports data frames and matrices. When printing, each sub-column is shown individually, using a title that resembles the syntax used to access it. Also supports recursively nested data frames (with data frame or matrix columns).
Added fuzz tests for character colonnades of varying widths.
Use fansi::substr_ctl()
in favor of crayon::col_substr()
.
colonnade()
now handles pillars named "sep"
(#115).pillar_shaft.character()
gains min_width
argument.pillar.sigfig
option (#105).new_pillar_title()
and new_pillar_type()
to support consistent output in glimpse()
(#31).format_type_sum()
generic that allows overriding the formatting of the type summary in the capital (#73).digits.secs
option is respected when computing the width for date-time values (#102).pillar.subtle_num
to TRUE
to turn it on again (default: FALSE
).TRUE
and FALSE
again (#95).numeric
. Trailing zeros are not shown anymore if all displayed numbers are whole numbers (#62)."class"
attribute (e.g., Duration
from lubridate) are now formatted using format()
if the pillar_shaft()
method is not implemented for that class (#88).1e-310
) are now printed correctly (tidyverse/tibble#377).getOption("pillar.sigfig") >= 6
(tidyverse/tibble#380).style_subtle_num()
, formatting depends on the pillar.subtle_num
option.NA
values are now shown in plain red, without changing the background color (#70).pillar.sigfig
to control the number of significant digits, for highlighting and truncation (#72),pillar.subtle
to specify if insignificant digits should be printed in gray (#72),pillar.neg
to specify if negative digits should be printed in red,pillar.bold
to specify if column headers should be printed in bold (default: FALSE
, #76),pillar.min_title_chars
to specify the minimum number of characters to display for each column name (default: 15 characters, #75).digits.secs
option is set (#74).Initial release.
pillar(x, title = NULL, width = NULL, ...)
colonnade(x, has_row_id = TRUE, width = NULL, ...)
squeeze(x, width = NULL, ...)
new_pillar_shaft_simple(formatted, ..., width = NULL, align = "left", min_width = NULL, na_indent = 0L)
new_pillar_shaft(x, ..., width, min_width = width, subclass)
new_ornament(x, width = NULL, align = NULL)
get_extent(x)
get_max_extent(x)
dim_desc(x)
style_na(x)
style_neg(x)
style_num(x, negative, significant = rep_along(x, TRUE))
style_subtle(x)
expect_known_display(object, file, ..., width = 80L, crayon = TRUE)
pillar_shaft(x, ...) # AsIs, Date, POSIXt, character, default, list, logical, numeric
type_sum(x) # AsIs, Date, POSIXct, data.frame, default, difftime, factor, ordered
is_vector_s3(x) # Date, POSIXct, data.frame, default, difftime, factor, ordered
obj_sum(x) # AsIs, POSIXlt, default, list
extra_cols(x, ...) # squeezed_colonnade
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.