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.
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