Changelog
Source:NEWS.md
pillar 1.10.0
Features
tbl_format_setup()
gains asetup
argument that supports printing the header before the data for the body is available, e.g., for remote backends such as databases (#686).New
tbl_nrow()
generic to support lazy data frames (#679).Show missing values in red in
glimpse()
(@ryanzomorrodi, #662).Math operations on
num()
objects now pass additional arguments to the mathematical function (@gvelasq, #659, #660).
pillar 1.9.0
CRAN release: 2023-03-22
Breaking changes
-
colonnade()
,extra_cols()
andsqueeze()
are now hard-deprecated (#272, #374, #631).
Bug fixes
Documentation
Polish
?pillar_options
(#583).Fix typo & missing quote in digits vignette stub (@gavinsimpson, #629).
pillar 1.8.1
CRAN release: 2022-08-19
Features
- New
pillar.advice
option to turn off advice in the footer, see?pillar_options
. Now off by default in non-interactive mode (#577).
pillar 1.8.0
CRAN release: 2022-07-18
Display
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. Useoptions(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).
Features
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).
Bug fixes
Fix printing of
Surv
andSurv2
objects (#561).Fix wording for corner case
max_extra_cols = 1
(#535).Remove excess underlines for
bit64::integer64()
data of different magnitude (#517, #529).
Documentation
ctl_new_pillar_list()
is documented on a separate help page (#516).Remove outdated detail in
?tbl_sum
(@IndrajeetPatil, #565).
Chore
Drop crayon dependency (#559).
Import ellipsis from rlang (#554).
Skip test that requires lubridate if it’s not installed (#505, @MichaelChirico).
API
Soft-deprecate
colonnade()
,squeeze()
andextra_cols()
(#496).Require rlang 1.0.1 (#512).
pillar 1.7.0
CRAN release: 2022-02-01
Breaking changes
-
colonnade()
is now soft-deprecated (#485). -
expect_known_display()
andis_vector_s3()
are now deprecated (#460, #501). -
new_pillar()
deprecatesextra
argument (#497).
Features
- Focus columns specified via the
focus
argument totbl_format_setup()
are kept in their original place and shown with the maximum width and with the “type” component underlined (#465).
Bug fixes
- Update
s3_register()
to use new implementation from rlang, this fixes CRAN checks related toscale_type()
(#462).
pillar 1.6.5
CRAN release: 2022-01-25
Breaking changes
- New
ctl_new_pillar_list()
, supersedesctl_new_compound_pillar()
(#433).
Features
- If some but not all sub-columns of a data frame or matrix column are shown, the names and types of the remaining columns are displayed in the footer (#365, #444).
-
num(fixed_exponent = ...)
is now represented with the fixed exponent in the pillar header, and in the title in ggplot2 (#307). -
tbl_format_setup()
gainsfocus
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). - New
scale_x_num()
andscale_y_num()
. If a column created withnum()
is used in a ggplot, the x and y scale will be formatted automatically according to to the specification (#400, #404). - List columns omit size information if horizontal space is insufficient (#392).
- If the column title of a backticked column is abbreviated, the trailing backtick is still printed (#391).
-
new_pillar_shaft_simple()
gainsshort_formatted
argument that contains the data to be used if horizontal space is insufficient (#389). - Default
obj_sum()
method returns abbreviation in attribute of return value (#390).
Bug fixes
- Extra columns in footer show backticks again if they are non-syntactic (#393).
- Fixed some cases for combinations of printed width and
getOption("width")
(#432). - Fix support for
nanotime::nanotime()
classes (#378, #380).
Internal
- Use eager registration via
NAMESPACE
for own methods for classes from other packages. - Reworked formatting routine, now using a visitor-based approach with in-order iteration over all pillars. The only visible changes are that usage of free space (in the case of limited space) has slightly improved (#435).
- Prepared removal of dependency on the crayon package (#233, #406).
- Use snapshot variants, requires testthat >= 3.1.1 (#387).
- Replace internal
"pillar_vertical"
class withglue::as_glue()
(#279).
pillar 1.6.4
CRAN release: 2021-10-18
Bug fixes
- Fix printing for some tibbles where a fixed-width column is followed by a column with variable width (#366).
- Avoid nested backtick blocks in vignette.
pillar 1.6.3
CRAN release: 2021-09-26
- Avoid blanket import for lifecycle package for compatibility with upcoming rlang (#368, @romainfrancois).
pillar 1.6.2
CRAN release: 2021-07-29
Options
- Options
pillar.print_max
,pillar.print_min
,pillar.width
andpillar.max_extra_cols
are now queried before the correspondingtibble.
ordplyr.
options are consulted, the latter will be soft-deprecated in pillar v2.0.0 (#353). - New
pillar.bidi
option. When active, control characters are inserted to improve display of data with right-to-left text (#333). - The new
pillar.max_footer_lines
option (default: 7) allows controlling the maximum number of footer lines shown. It is applied in addition to the existingtibble.max_extra_cols
option (#263).
Formatting
- If a column doesn’t make use of all horizontal width offered to it, the excess width is distributed over other columns (#331).
- Improved allocation of free space in multi-tier tables with
getOption("tibble.width") > getOption("width")
(#344). - All pillars are shown with their true horizontal extent, irrespective of the indicated
width
. This simplifies the implementation of custompillar_shaft()
methods (#347).
Features
-
num()
gainsextra_sigfig
argument to automatically show more significant figures for numbers of the same magnitude with subtle differences (#97). -
print.tbl()
andformat.tbl()
support themax_extra_cols
andmax_footer_lines
arguments that override the corresponding options (#360). -
print.tbl()
andformat.tbl()
maps the now deprecatedn_extra
argument tomax_extra_cols
for consistency (#360).
Bug fixes
- Avoid mangling of duplicate column names in footer (#332).
- Fix warning with zero of type
bit64::integer64()
(#319).
Documentation
- All package options are now documented in
?pillar_options
(#339). -
obj_sum()
no longer callstype_sum()
for vectors since pillar v1.6.1, this is now documented (#321). - Fix documentation on usage of
vctrs::vec_proxy()
andvctrs::vec_restore()
(#322).
Internal
- Using
attr(exact = TRUE)
everywhere. -
is_vector_s3()
is no longer generic (#181). - Fix internal logic around
vec_proxy()
andvec_restore()
(#316).
pillar 1.6.0
CRAN release: 2021-04-13
Features
- New
num()
andchar()
offer a flexible way to customize the display of numeric and character columns (#191, #84). - New
"pillar.max_dec_width"
option (#308). - New
format_type_sum.AsIs()
avoids the need to implement your ownformat_type_sum()
method (#286). -
align()
gainsspace
argument to control the character used for filling (#285). - Numbers in scientific and decimal notation are formatted with the same rules regarding significant or decimal digits (#297).
Bug fixes
- Load the debugme package only if the
DEBUGME
environment variable is set. - More accurate detection if the decimal dot is necessary, and how many digits to show after the decimal dot (#298).
- Use display width instead of number of characters when truncating character columns.
Documentation
- New
vignette("numbers")
andvignette("digits")
(#308).
pillar 1.5.1
CRAN release: 2021-03-05
Features
- New
format_glimpse()
(#177).
Bug fixes
- Color and formatting can now be reliably turned off by setting the
"cli.num_colors"
option to 1 (#269).
Documentation
- Add examples for new functions (#264).
- Fix lifecycle badges everywhere.
pillar 1.5.0
CRAN release: 2021-02-22
Extensibility
New
size_sum()
generic (#239).New
ctl_new_pillar()
andctl_new_compound_pillar()
used viaprint.tbl()
,format.tbl()
andtbl_format_setup.tbl()
(#230).New
new_pillar()
low-level constructor (#230).New
new_pillar_component()
andpillar_component()
(#230).New articles
vignette("extending")
andvignette("printing")
(#251).
Formatting
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()
andtbl_format_footer()
(#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).
Internal
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()
andextra_cols()
(#204).
pillar 1.4.5
CRAN release: 2020-07-09
Features
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).
Technical
pillar_shaft()
,format_type_sum()
andextra_cols()
issue a warning if dots are unused.new_pillar_title()
andnew_pillar_type()
warn if...
is not empty.
pillar 1.4.4
CRAN release: 2020-05-05
obj_sum()
usesvctrs::vec_size()
internally.is_vector_s3.default()
is soft-deprecated and no longer used. Please ensure thatvctrs::vec_is()
isTRUE
for your class.Rely on vctrs for type abbreviations.
pillar 1.4.3
CRAN release: 2019-12-20
new_pillar_shaft_simple()
gainsna
argument to control appearance ofNA
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 ofas_character()
.Remove compatibility with testthat < 2.0.0.
pillar 1.4.2
CRAN release: 2019-06-29
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.
pillar 1.4.0
CRAN release: 2019-05-11
Breaking changes
-
type_sum()
forwards tovctrs::vec_ptype_abbr()
(#134). This makes sure thatlist_of
columns (for values of the same type) are properly displayed. The value returned forfactor
andcomplex
remains unchanged, because this will change in vctrs. - The
class
argument tonew_pillar_shaft()
deprecates the existingsubclass
argument. Passing asubclass
argument leads to a warning once per session (#157).
Output
- Removed extra space for pillars with a negative value of lower magnitude than the largest positive value (example: -1 and 23).
- 0-col tibble and matrix columns are now formatted with a capital containing
[,0]
and an empty shaft (#149).
Performance
-
squeeze()
is now faster (because the width computation inpillar_shaft.numeric()
now uses more arithmetics instead of string concatenation). Further speedups may require implementation of crucial parts in C (#147). - Styling output is faster: an expensive check for availability of colored output is carried out only once per call to
colonnade()
, and styling is implemented manually (#133, @jimhester).
Internal
- All internal S3 classes have the
pillar_
prefix (#156). - Only check native output on Windows, due to subtle differences when running on Linux in a latin1 locale.
pillar 1.3.1
CRAN release: 2018-12-15
Bug fixes
- Fix off-by-one error in distribution of empty space (#141).
Visible changes
-
NA
in names is no longer escaped with backticks. - Don’t add quotes for pillars formatted with their
format()
method (tidyverse/tibble#448).
pillar 1.3.0
CRAN release: 2018-07-14
Visible changes
Unknown data types are formatted using
format()
, notas.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.
Interface changes
-
format_type_sum()
gainswidth
argument (#73).
Performance improvements
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 ofcrayon::strip_style()
.Slightly faster printing of colonnades by reusing an intermediate result.
Internal
pillar()
no longer adds backticks iftitle
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 ofcrayon::col_substr()
.
pillar 1.2.3
CRAN release: 2018-05-25
- Eliminate CRAN check warning about undeclared withr dependency.
- More defensive test to address CRAN check failures on Solaris.
-
colonnade()
now handles pillars named"sep"
(#115). -
pillar_shaft.character()
gainsmin_width
argument.
pillar 1.2.2
CRAN release: 2018-04-26
- Whole numbers are printed without a decimal dot again. Numbers that are the result of a whole number divided by a power of 10 (subject to a tolerance to account for floating-point imprecision) are shown without trailing decimal zeros, even if these zeros are significant according to the
pillar.sigfig
option (#105). - New
new_pillar_title()
andnew_pillar_type()
to support consistent output inglimpse()
(#31). - New
format_type_sum()
generic that allows overriding the formatting of the type summary in the capital (#73). - The
digits.secs
option is respected when computing the width for date-time values (#102).
pillar 1.2.1
CRAN release: 2018-02-27
Display
- Turned off using subtle style for digits that are considered insignificant. Negative numbers are shown all red. Set the new option
pillar.subtle_num
toTRUE
to turn it on again (default:FALSE
). - The negation sign is printed next to the number again (#91).
- Scientific notation uses regular digits again for exponents (#90).
- Groups of three digits are now underlined, starting with the fourth before/after the decimal point. This gives a better idea of the order of magnitude of the numbers (#78).
- Logical columns are displayed as
TRUE
andFALSE
again (#95). - The decimal dot is now always printed for numbers of type
numeric
. Trailing zeros are not shown anymore if all displayed numbers are whole numbers (#62). - Decimal values longer than 13 characters always print in scientific notation.
Bug fixes
- Numeric values with a
"class"
attribute (e.g.,Duration
from lubridate) are now formatted usingformat()
if thepillar_shaft()
method is not implemented for that class (#88). - Very small numbers (like
1e-310
) are now printed correctly (tidyverse/tibble#377). - Fix representation of right-hand side for
getOption("pillar.sigfig") >= 6
(tidyverse/tibble#380). - Fix computation of significant figures for numbers with absolute value >= 1 (#98).
New functions
- New styling helper
style_subtle_num()
, formatting depends on thepillar.subtle_num
option.
pillar 1.1.0
CRAN release: 2018-01-14
-
NA
values are now shown in plain red, without changing the background color (#70). - New options to control the output, with defaults that match the current behavior unless stated otherwise:
-
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).
-
- Shortened abbreviations for types: complex: cplx -> cpl, function: fun -> fn, factor: fctr -> fct (#71).
- Date columns now show sub-seconds if the
digits.secs
option is set (#74). - Very wide tibbles now print faster (#85).
pillar 1.0.0
CRAN release: 2017-11-20
Initial release.
Own S3 methods
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