skimr_table_header_width
. The default is to use the console width, i.e. the value of the width
option.haven_labelled
columns is now supported. These columns are summarized using skimmers for the underlying data, typically either numeric or character.skim_list
(most commonly generated by the partition()
function) also inherits from a list
knitr
.We’ve made to_long()
generic, supporting a more intuitive interface.
skim_df
, it reshapes the output into the V1 long style.skim_tee()
Thanks @sethlatimer for suggesting this feature.
tibble
.skimr::summarize()
.Address failed build in CRAN due to lack of UTF-8 support in some platforms.
V2 is a complete rewrite of skimr
, incorporating all of the great feedback the developers have received over the last year. A big thank you goes to @GShotwell, @akraemer007, @puterleat, @tonyfischetti, @Nowosad, @rgayler, @jrosen48, @randomgambit, @elben10, @koliii, @AndreaPi, @rubenarslan, @GegznaV, @svraka, @dpprdan and to our ROpenSci reviewers @jenniferthompson and @jimhester for all of the great support and feedback over the last year. We couldn’t have done this without you.
For most users using skimr
will not change in terms of visual outputs. However for users who use skimr
outputs as part of a larger workflow the differences are substantial.
skim_df
We’ve changed the way data is represented within skimr
to closer match expectations. It is now wide by default. This makes piping statistics much simpler
skim(iris) %>%
dplyr::filter(numeric.sd > 1)
This means that the old reshaping functions skim_to_wide()
and skim_to_list()
are deprecated. The latter is replaced with a reshaping function called partition()
that breaks a skim_df
into a list by data type. Similarly, yank()
gets a specific data type from the skim_df
. to_long()
gets you data that is closest to the format in the old API.
As the above example suggests, columns of summary statistics are prefixed by skim_type
. That is, statistics from numeric columns all begin numeric.
, those for factors all begin factor.
, and so on.
We’ve deprecated support for pander()
and our kable()
method. Instead, we now support knitr
through the knit_print()
API. This is much more seamless than before. Having a skim_df
as the final object in a code chunk should produce nice results in the majority of RMarkdown formats.
We’ve deprecated the previous approach customization. We no longer use skim_format()
and skim_with()
no longer depends on a global state. Instead skim_with()
is now a function factory. Customization creates a new skimming function.
my_skim <- skim_with(numeric = sfl(mad = mad))
The fundamental tool for customization is the sfl
object, a skimmer function list. It is used within skim_with()
and also within our new API for adding default functions for new data types, the generic get_skimmers()
.
Most of the options set in skim_format
are now either in function arguments or print arguments. The former can be updated using skim_with
, the latter in a call to print()
. In RMarkdown documents, you can change the number of displayed digits by adding the skimr_digits
option to your code chunk.
summary()
, and it is now incorporated into print()
methods.focus()
is like dplyr::select()
, but it keeps around the columns skim_type
and skim_variable
.dplyr
verbs to make sure that they place nice with skimr
objects.skimr
has never really focused on performance, it should do a better job on big data sets with lots of different columns.skim_without_charts()
as a fallback for when unicode support is not possible.skimr
removes the tibble metadata when generating output. On some platforms, this can lead to all output getting removed. To disable that behavior, set either strip_metadata = FALSE
when calling print or use options(skimr_strip_metadata = FALSE)
.This is likely to be the last release of skimr version 1. Version 2 has major changes to the API. Users should review and prepare for those changes now.
This is likely to be the last release of skimr version 1. Version 2 has major changes to the API. Users should review and prepare for those changes now.
skim_with(.list = mylist)
or skim_with(!!!mylist)
rlang
: skim_with(iqr = ~IQR(.x, na.rm = TRUE))
.skim_with()
to add and remove skimmers at the same time, i.e. skim_with(iqr = IQR, hist = NULL)
works as expected.spark_line()
and spark_bar()
are no longer exportedmin(x)
and max(x)
to quantile(x, probs = 0)
and quantile(x, probs = 1)
. These changes lead to more predictable behaviors when a column is all NA values.NA
s threw an errordplyr::do()
skim_v()
is no longer exported. Vectors are now directly supported via skim.default()
.kable()
and pander()
for skim_df
objects.skim_df
objects.skim.default()
.dplyr::group_by()
)