- Split
docx
document generation to the new packagertables.officer
.
- Experimental pagination is now possible in
tt_as_flextable()
andexport_as_docx()
. - Added handling of widths in
tt_as_flextable()
. Now it is possible to change column widths for.docx
exports.
- Fixed bug that was keeping indentation space characters in top left information when making a
flextable
from aTableTree
object.
- Added top left information handling (now bold and bottom aligned).
- Added
section_properties_default()
function to define standard portrait properties for tables. - Added default theme for
.html
outputs. - Added parameter
bold_titles
tott_to_flextable()
to bold titles. - Now users can add more than one theme to
tt_to_flextable()
, and/or extend themes.
- Modified
reorder_split_levels()
to cover more edge cases and be more stringent in the allowed inputs. - Removed table tree
tt
input fromtheme_docx_default()
and added code to handle row classes and number of columns internally. - Reworked padding and spacing in default theme
theme_docx_default()
. - Added parameter
bold_titles
tott_to_flextable()
to bold titles.
- Fixed
"\n"
newline issues inas_html
by relying onto output devices for newline handling. Addedexpand_newlines = FALSE
default to allow previous behavior. keep_split_levels()
throws now an error if the user requests to keep levels that are not present in data.- Fixed issue with removal of horizontal lines in
tt_as_flextable()
header when title was added. - Fixed multiple counts in header issue when exporting to
flextable
. - Fixed issue with empty cells
""
having larger imposed margins than filled cell. They are transformed into" "
before rendering. - Fixed issue with borders appearing in
theme_docx_default()
when only one line of column names is present, but top left information is on multiple lines.
- Added option to change
sep = "\t"
and set other parameters via...
parameter propagation inexport_as_tsv
. - Added developer's guide vignette. New materials are focused on printing methods, specifically
matrix_form
andtoString
. - Grouped split functions documentation into one page with precise descriptions of each function and relative examples.
- Moved
simple_analysis
into utils file. - Added examples to
theme_docx_default()
showing how to extend the default theme. - Added the possibility to remove internal borders from label rows in
theme_html_default()
. - Split export functions into separate source files. Similarly for test files.
- Update
col_counts
vignette wording, as CRANmacOS
check failed. Raised the issue with the R-core team already.
- Add support for
truetype
fonts based onformatters
version>= 0.5.8
. Nearly all functions related to pagination or export now acceptfontspec
argument and pass it around accordingly, by @gmbecker. - Core splitting machinery can now be overridden in column space via
make_split_fun
provided thatcore_split
associates the generated facets with subsetting expressions. Subsetting expressions remain unnecessary for splits in row space. By @gmbecker. - ValueWrapper objects now carry around subsetting expressions for use during tabulation, by @gmbecker.
make_split_res
,add_to_split_result
now accept a list of subsetting expressions which will be attached to the values, by @gmbecker.- New
value_expr
internal getter and setter methods, by @gmbecker. - All tables are now guaranteed to have fully path-traversable column structures (all facets in column space uniquely reachable via pathing) @gmbecker.
- Display of higher order (non-leaf) column counts is now supported (#135) @gmbecker.
- Column count visibility and format can be set independently for each block of sibling facets (#752) @gmbecker.
split_cols_by*
functions now acceptshow_colcounts
andcolcount_format
arguments.- New (column-) path based
colcount_visible
getter and setter for changing column count visibility in an already built table @gmbecker. - New (column-) path based
facet_colcount
getter and setter column count value at arbitrary point in column structure of built table @gmbecker. - New
facet_colcounts_visible
setter to conveniently set the column count visibility of a set of sibling facets in column space - New
rm_all_colcounts
convenience function for turning off visibility all column counts throughout the column structure @gmbecker.
- Fixed bug in
as_html
preventing indentation from being applied inViewer
output. col_counts<-
andcol_total<-
methods now explicitly convertvalue
to integer, by @gmbecker.col_gap
is now respected innlines
row methods, and thus bymake_row_df
, by @gmbecker.
- Added
lifecycle
badge files for deprecated documentation. - Deprecated the
gap
andcheck_headers
arguments torbindl_rtables
usinglifecycle
.
- Added
top_level_section_div
forbasic_table
to set section dividers for top level rows. - Added
keep_label_rows
toas_result_df
to have these lines visible. sort_at_path
now gives informative error messages when the given path does not exist.
- Fixed
rlistings
decoration (e.g. titles and footers) expansion when there are new lines. Moved relevant handling fromrtables
'matrix_form
function toformatters
' dedicatedmform_handle_newlines
function. - Fixed issue with
rtables_root
not being removed when usingas_result_df
. - Fixed edge case bug in
as_result_df
where rows of the table have only"root"
as path index. - Fixed
sort_at_path
pathing to ignore leading"root"
element (regardless of actual root element name) to match currenttt_at_path
behavior. - Fixed
section_div
for analysis of multiple variables (AnalyzeMultiVars
). - Fixed mismatch between indentation declared in row info (
mf_rinfo(mf)
) and actual selected indentation frommatrix_form(mf, indent_rownames = FALSE)
. - Fixed bug in
as_html
preventing indentation from being applied inViewer
output. col_counts<-
andcol_total<-
methods now explicitly convertvalue
to integer, by @gmbecker.col_gap
is now respected innlines
row methods, and thus bymake_row_df
, by @gmbecker.- Updated
as_html
to accommodate\n
characters.
- Removed deprecated functions
add_analyzed_var
andtrim_zero_rows
.
- Removed
ref_group
reordering in column splits so not to change the order. - Added
bold
argument toas_html
to bold specified elements, andheader_sep_line
argument to print a horizontal line under the table header in rendered HTML output. - Duplicate referential footnotes are consolidated when tables are rendered.
- Section divisors can be set for analysis rows.
- Added setter and getter for section dividers (
section_div
andsection_div<-
). They also accept split section structure assignment. - Added
header_section_div
setters and getters for layout and table objects along with relatedbasic_table
parameter. - Added
na_str
argument toanalyze_colvars
to set custom string to print in place of missing values. - Added flat
data.frame
outputs foras_result_df()
via flag parametersas_viewer
,as_strings
, andexpand_colnames
. - Migrated
export_as_pdf
function toformatters
.
- Fixed a bug that was failing when wrapping and section dividers were used at the same time.
- Fixed a bug in
as_result_df
causing misalignment of column names. - Fixed a bug that was not allowing path indexing as
row_paths()
was giving a different path due to it being made of named values. - Fixed a bug in
as_result_df
when called on tables with less than 3 rows.
- Applied
styler
and resolved package lint. Changed default indentation from 4 spaces to 2. - Added Developer Guide with Debugging, Split Machinery, and Tabulation sections.
- Whitespace is not trimmed when rendering tables with
as_html
. - Started deprecation cycle for
col_fnotes_here
to be replaced withcol_footnotes
. - Exported
section_div
methods now have a dedicated documentation page that is visible to users. - When tables are exported as
txt
, they preserve the horizontal separator of the table. - Added imports on
stringi
andcheckmate
as they are fundamental packages for string handling and argument checking. - Updated introduction vignette and split it into two. Section on introspecting tables is now located in a separate vignette.
- Added support for white spaces in all labels and text by redesigning of wrapping functions in
formatters
. - Added support for new line characters across rtables (titles, column names, row names, footers, and
na_str
). - Modified top left information vertical alignment to stay at the bottom of the header.
- Fixed a bug causing
Viewer
andas_html
to fail when new line characters were added.
- Added slide decks for advanced training as internal files.
- Added support for
.docx
exports withexport_as_docx()
. - Expanded support for
flextable
customization with theme function specific for word documents (theme_docx_default()
).
- Fixed bug causing all-
NA
rows to be included in every.df_row
split.
- Specified minimal version of package dependencies.
- Analysis functions (
cfun/afun
) can use new parameters to extend analysis calculations:.alt_df_row
and.alt_df
give access toalt_counts_df
across columns, while.all_col_exprs
and.all_col_counts
contains global information about all columns. - Binding objects via
rbind
will retain titles/footer information if identical in all objects or only present in the first object being bound.
- Analysis functions (
cfun/afun
) have more information about current column split;.spl_context
has access tocur_col_id
,cur_col_expr
,cur_col_split
, andcur_col_split_val
. - Added vignette on exploratory analysis with
qtable
. - Extracted
qtable_layout
fromqtable
.
- Page-by splits which generate zero facets (and thus tables which would have zero pages when rendered) now throw an informative error at table build time.
- Removed superfluous warning which arose for custom split functions when reference group is is set (#707 (comment)).
- Fixed
qtable
labeling viarow_labels
(#698). - Error catching and test coverage for cases where
alt_counts_df
presents different splits fromdf
.
- Cleaned up spelling in documentation (#685)
- Custom appearance vignette updated with decimal alignment support.
- Alignment checks have been moved into
formatters
:formatters::check_aligns
superseded internal functionchk_rtables_align
andformatters::list_valid_aligns
supersededrtables_aligns
.
- Fixed major regressions for
page_by
machinery caused by migration toformatters
0.5.1 pagination framework. - Fixed
page_by
labels become missing when only one level exist in thesplit_rows_by
. - Fixed a bug when dropping
var
levels but notlblvar
levels. - Added checks to catch bad labels (with {}) and throw informative error.
- Added
qtable
function to create a table with a single top-level structure in both row and column dimensions involving faceting by 0 or more variables in each. - Added
as_result_df
function to flatten a table into a dataframe. - Added
sanitize_table_struct
,validate_table_struct
,find_degen_struct
to support degenerative table rendering.
- Improved resilience of pagination machinery (
paginate_table
) by generalizing parameters' defaults (cpp
,lpp
, andfont_size
). - Moved
export_as_txt
toformatters
. Added to reexports. - Migrated
export_as_rtf
toformatters
. Not re-exported. - add
r2rtf
to Suggests - pagination logic has been migrated completely (excepting page_by splits) to
formatters
and is now invoked from there. paginate_table remains as a convenience function. - Removed warning in
str
method when called upon table objects. - Provide
str
method forVTableTree
objects with a defaultmax.level
of 3, as the infinite default from base is not useful or informative. - default
font_size
value is now8
across pagination and export machinery margins
argument in pagination and export machinery now (correctly) interpreted as inches. This change is inherited fromformatters
lpp
andcpp
now default toNA_integer_
, which is interpreted as inferring their value from the physical page size specified.- Horizontal pagination now occurs by default due to the above (because there is a default page type -
"letter"
. Pagination can still be turned off in either direction by settingl/cpp
toNULL
explicitly. - Referential footnotes now have both a
symbol
and anindex
. Messages associated with symbols will only appear once per page in the footer materials regardless of number of elements referenced in the page with that symbol. Matches and inherits from changes informatters
- Started deprecation cycle for
trim_zero_rows
. - Fixed bug occurring when extracting
cell_values
after sorting. - Removed deprecated function
vpaginate_table
. - Added examples and details for
sort_at_path
. - Added
split_label
to functionsplit_rows_by_multivar
andextra_args
to functionsplit_cols_by_multivar
. - Added
split_rows_by_multivar
documentation.
- added
make_split_fun
function for creation of custom split functions basic_table
now acceptscolcount_format
- 2d formats are now allowed for column counts provided one element is a percent, which will be automatically set to 100%
spl_context
now includes root row in row-split contexts.- Added vignette on format precedence
- Added vignette on split functions
- Added custom appearance vignette
- Significant overhaul of sorting vignette
- extended and clarified documentation
export_as_pdf
now correctly takesmargins
into account when calculatinglpp
andcpp
from page size.- exporters now pass down non-default
colwidths
values correctly nlines
TableRow
method (used for both rows and column label extent in pagination) now correctly handles column spanning- pagination with
verbose = TRUE
now includes original and adjusted lines-per page information cont_n_allcols
andcont_n_onecol
score functions now throw errors when they are applied to subtables that have no content table, instead of the previously returnedNA
sort_at_path
now emits an informative error message when score functions fail.paginate_table
now acceptscolwidths
and paginates assuming column label and cell values are wrapped to those widths.make_row_df
now acceptscolwidths
and calculates row extents assuming cell values are wrapped to those widthsnlines
TableRow
method now uses providedcolwidths
to assume cell-value wrappingexport_to_txt
now automatically paginates when any form of page dimension is provided (previously the default was unconditionally not paginating).- Versioned dependency on
formatters
increased to>=0.4.0
[<-
now treats characteri
andj
values as paths, the same as[
always has.[<-
CellValue
method now preservesCellValue
attributes (e.g., format)- More detailed subsetting and modification vignette
nlines
methods now accept bothcolwidths
andmax_width
max_width
is now used during pagination to determine lines taken up by referential footnotesmake_col_df
now acceptscolwidths
argument, and can be called directly onInstantiatedColumnInfo
objects- versioned dependency on
formatters
increase to>0.3.3.12
- word wrapping title/footer materials no longer fails in the presence of
""
values. - versioned dependency on
formatters
increase to>0.3.3.11
paginate_table
now acceptstf_wrap
andmax_width
and respects title/footer word wrapping when present- export functions now accepts
tf_wrap
andmax_width
and use them in both pagination (when turned on) andtoString
when used (pdf, txt exporters). - versioned dependency on
formatters
increased to>0.3.3.10
export_as_pdf
now accepts standard page/font size parameters- original parameters (
width
,height
,fontsize
are soft deprecated (no warning) and will be fully deprecated and then removed in the future. toString
method forVTableTree
now acceptstf_wrap
andmax_width
export_as_txt
andexport_as_pdf
now acceptcpp
, as well astf_wrap
andmax_width
and default totf_wrap
being on andmax_width = cpp
whencpp
is non-NULL.basic_table
now acceptsinset
argument for declaring table inset- Table and Layout object classes now have a
table_inset
slot, with accessor functions. matrix_form
method forVTableTree
setstable_inset
value- Increase versioned dependency on
formatters
to>0.3.3.5
fortable_inset
support - Use
exact=TRUE
in all calls toattr
within access functions - Increase versioned dependency on
formatters
to>0.3.3.4
- layouting instructions now accept
na_str
argument, which specifiesna
string with the same inheritance rules as formats - (pre-data) Split and (post tabulation) Table/row S4 classes now carry around
na_str
information - Increase versioned dependency on
formatters
to>= 0.3.3.3
for support ofna_str
s withNA_character_
values paginate_table
now takes page dimension and font information and usesformatters::page_lcpp
to calculatelpp
andcpp
automatically when those are provided.- Increase versioned dependency on
formatters
to>= 0.3.3.2
forpage_lcpp
paginate_table
now acceptscpp
and will perform vertical pagination when it is non-nullvpaginate_table
is now deprecated- Increased versioned dependency on
formatters
to>=0.3.2.4
- Support for section dividers (
section_div
argument insplit_rows_by*
function) - Updated versioned dependency on
formatters
to>=0.3.2.3
- Equivalent split functions with different enclosing environments (e.g., 2 identical calls to
add_combo_levels
#340) no longer blockrbind
ing - Fixed various documentation bugs where description section was being added to header.
- empty level check for splitting variables reinstated.
- Throw informative error messages when custom analysis, content or split functions fail (#329)
- empty level check for splitting variables temporarily removed. It is very likely to be reinstated in a future release.
col_counts
getter and setter now acceptpath
argument.- empty levels of a splitting variable now result in an informative error message (character and factor cases).
- fixed bug in handling of column extra arguments that was preventing
cbind
ing tables from working correctly ([#324]](#324))
- empty factor levels are now not dropped for column splits when ref_group is set (#323)
linesep
argument totoString
and related functions renamed tohsep
- Increase versioned dependency on
formatters
to>=0.3.0
- Default "line separator" between header and body now falls back to "-" non-UTF charset locales.
- New
hsep
argument tobuild_table
which sets the horizontal separator for the constructed table (and subtables thereof) - New
horizontal_sep
andhorizontal_sep<-
accessors for constructed tables, the latter of which is mandatorily recursive. split_rows_by(var, child_labels="hidden")
no longer removes the structural subtable corresponding to levels ofvar
(#314)
formatable
dependency renamed toformatters
for suitability of release to CRAN- Update versioned dependency of
formatters
(previouslyformatable
) to>=0.2.0
- Fix bug when function format combined with NULL
cfun
caused error (#307) - Fix bug in
path_enriched_df
(which powerstsv
export), related to (#308)
- added
table_shell
to display shell of table with formats
- added
linesep
argument totoString
to specify a character to create the line separator. Previously we used the en dash as the line separator character, now we changed the default to the em dash reducing the gap between the dash line elements.
- Initializing layouts with
NULL
is now deprecated insert_rrow
is deprecated in favor of newinsert_row_at_path
andlabel_at_path<-
functions- split and analysis/content functions can now depend on values of splits they are nested inside by accepting and using the new
.spl_context
optional argument - new
trim_levels_to_map
split function for dictating exact combinations of values which should appear across splits value_formats
function now exported which returns/displays the effective formats of all cells in a tablecompare_rtables
is now much faster for tables with many cellscompare_rtables
now acceptsstructure
argument which adds comparison of structure (by way of row- and column-path positions)- new
tt_to_flextable
coercion function - new
export_as_pdf
exporter function value_at
andcell_values
functions now have methods forTableRow
objects making them usable in sorting/pruning functions
- new
trim_levels_to_map
split function based on[@wwojciech](https://github.com/wwojciech)
's work in #203 - support for column referential footnotes
- support for adding footnotes to existing table via
fnotes_at_path<-
function trim_levels_in_group
now trims empty levels of outer (split) variable by defaultvalue_at
andcell_values
now work fortablerow
objects- Fixed
as_html
bug inmultivar
split columns case - Fixed pagination off-by-one error
- Add experimental support for newlines in column names, row labels, and cell values (not supported in top-left annotations)
as_html
refactored to support newlines while respecting table structure- self_extent column of
df
returned bymake_row_df
now reflects extent in lines, thus will return larger values if the row-label or any cell values contain newlines. - Fix bug where tables output using
as_html
(or viewed inViewer
) were missing the table class attribute (#194) - inserting a
DataRow
with incorrect number of columns is now an error (#199) - Referential footer machinery now works in
colspan
case. - Fix extraneous footnote attribute bug (#198)
- Fix max -Inf warning when content rows appear at positions whose children have 0 visible rows (#200)
- Resync
NEWS.md
file - Introduce titles and footnotes
- Support automatic population of top-left
- Introduce referential footnote support for cells and row labels
- Added
vars_in_layout
to list (explicitly named only) variables used in a layout - Fix column label ordering bug when value label variable is a factor (#173)
Synchronize release with GitHub commit sha
.
Documentation revisions as requested by CRAN. No change to package code.
Documentation-text only changes to introduction vignette to pass CRAN's URL checks. All package, example, test, and vignette code fully identical to that in tagged GitHub release 0.3.4
Minor changes to the 0.3.3 version in order to submit rtables
to CRAN.
This version completely refactors the rtables
package. We do provide a backwards compatibility layer with the
rtable
, rcell
, rrow
, rheader
, and rtabulate
family of functions. However the table data structure and main
tabulation framework have changed. We provide extensive documentation in the manuals help(package = "rtables")
and
vignettes vignette(package = "rtables")
of the package.
The changes to rtables
have been undertaken to better meet the requirements of creating and analyzing & reporting
tables in the context of clinical trials.
make_afun
nowforce()
s all customization arguments immediately, which prevents problems when called within loop/lapply
constructs.
- Tabulation machinery no longer removes NAs mandatorily in some cases, including
multivar
column splits analyze_colvars
'sinclNAs
argument now respected.
- Fix indent modifier propagation during tabulation
- Fix indent calculation in
make_pagdf
- Add significant testing to ensure
make_pagdf
indent calculation remains correct
- Rework how reference columns are handled so analyses which use
.in_ref_col
and.ref_group
work correctly when custom splitting is used (including the provided combination-levels mechanism)
- Fix naming/pathing for columns in
multivar
case (split itself now has default name"multivars"
) - Fix labeling bug when same variable appears multiple times in
MultiVarSplit
with different associated levels
- Allow single variable to be used within
split_cols_by_multivar
- Various removal of defunct
- Fix regression caused by 0.3.2.17.9039 where column split values were displayed by name rather than label.
- Fix bug in display of column information when column structure is not symmetric, as with recursive
cbind
s.
- Fixed bug in row subsetting when table has only content rows.
- Basic compare_rtables function now works as in previous versions, no awareness of row or column structure.
summarize_row_groups
can now accept a list of functions for thecfun
argument asanalyze_colvars
does.
- Fix bug unearthed by change in 0.3.2.17.9034 where cell formats not retained during column subsetting
- Fix internal
value_formats
accessor so it operates onCellValue
s rather than the raw contained values (thus always returning NULL) rrow
constructor no longer interprets cell formats a row format when they are the same across all cells. Fixes bug in "correct way" code discussed in #112
- Interpret .formats in
in_rows
as cell formats rather than row formats.
cbind_rtables
can now take more than 2 tables.
- Fix issue underlying spurious length-mismatch warning in some cases when using
analyze_colvars
analyze_colvars
now takes and adheres toinclNAs
argument
- issues with no news:
- added format
xx.xx (xx.xx - xx.xx)
andx.xxxx | (<0.0001)
- Minor changes.
- Changed testing approach to fit internal pipelines.
- Replaced dots to underscore in class checking functions.
-
col_by
inrtabulate
now accepts matrices:col_by_to_matrix
,col_by_to_factor
,by_factor_to_matrix
.by_add_total
,by_all
,by_combine
,by_quartile
,by_compare_subset
,by_hierarchical
,by_drop_empty_cols
.
-
New utility functions to deal with variable labels:
label
,var_labels<-
,var_labels
,var_labels_remove
,var_relabel
,with_label
.
-
Other new functions:
cbing_rtables
.empty_rtables
,is_empty_rtable
,is_non_empty_rtable
,is_rtable
.header_indent
,header_indent<-
,header_row.names
,header_row.names<-
.insert_rrow
.
rbind.rtable
now supports binding rtables with rows, e.g.rbind(tbl1, rrow(), tbl2)
orrbind(tbl1, rrow("row name"), tbl2)
.rbindl_rtables
supportsNULL
objects in the list (except for the first element).- Add
indent
function. header_add_N
deals gracefully withNULL
objects.
rtablulate
family of functions do not support therow_*_data_args
arguments anymore. Instead, thecol_wise_args
argument is introduced.- Functions
order_rrows
,sort_rrows
,order_rtables
, andsort_rtables
are introduced. - Prevent
rtables
from being unlisted withunlist.rtables
.
Viewer
now also accepts objects of classshiny.tag
(defined in packagehtmltools
).as.html
acceptsclass.table
,class.tr
,class.th
, andclass.td
as an argument.
- Added
sprintf_format
for formattingrcell
s (thanks to Doug Kelkhoff for the suggestion). - Added
"(N=xx)"
and">999.9"
format labels. rtabulate
has now an argumentcol_N
and the functioncol_N()
.
- Version
0.1.0
is a major re-design with lots of internal refactoring and the following API changes:- Redesign:
rtable
has nowheader
argument instead ofcol.names
. Aheader
can be created withrheader
and is a collection ofrrow
s. Ifheader
is set toc("A", "B")
thenrtable
will create therheader
with a singlerrow
and by settingrow.name
toNULL
. header
andheader<-
function added.- Renamed
get_rcell_formats
tolist_rcell_format_labels
. - If
rcell
format isNULL
then the cell content will be converted to a string withpaste(as.character(x), collapse = ', ')
. - Accessor
[i,]
works now to subset a table. rbind
method for rtables.row.names<-.rtable
method.rtabulate
added for creating tables.indented_row.names
function added.
- Redesign:
- Initial public release