Skip to content

qol 1.3.4 - CRAN release

Latest

Choose a tag to compare

@s3rdia s3rdia released this 21 Aug 07:32
· 3 commits to main since this release

This one got a lot bigger than I expected. After every new release I think, that I am done, but holy cow there are still many things to add and to fix. Some of the highlights are shown here in a bit more detail: https://s3rdia.github.io/qol_blog/posts/14.%20Update%201.3.4/

New functions

  • create_table_of_contents(): Creates a table of contents sheet with custom style based on the provided 'Excel' workbook. (02.08.2026, thanks to @JanMarvin)
  • check_required_package(): Check whether a certain package is required and ask the user whether it should be installed or not. (08.08.2026)
  • run_script(), run_folder(), run_project(), run_project_parallel(): RStudio helper functions that run scripts, folders or whole folder structures via diolog selection. (13.08.2026)

New functionality

  • load_file(), load_file_multi(): When passing a named vector or list into the keep parameter, the original variables will directly be renamed. (18.07.2026)
  • any_table(): Can now handle duplicate column names by making them unique (except NA columns). (18.07.2026)
  • frequencies(), crosstabs(): Now also receive a colored background. (22.07.2026)
  • import_multi(): Received a new paramter stack_data which can stack read in files and return them as a single data frame. (22.07.2026)
  • import_multi(): Can now handle a vector of sheet names and import only the specified ones. (22.07.2026)
  • multi_join(): Variable names in the on parameter can now be passed without quotation marks. (23.07.2026)
  • remove_stat_extension(): Statistic extensions can now be passed without quotation marks. (24.07.2026)
  • set_style_options(): Parameters, which are originally NULL, can now be reset by assigning a value of NULL. (24.07.2026)
  • combine_into_workbook(): Can now create a custom styleable table of contents. (01.08.2026, thanks to @JanMarvin)
  • excel_output_style(): Added parameters for the custom styleable table of contents. (01.08.2026)
  • any_table(): When using by variables the special keyword [by_var] is now replaced with the actual by value in the titles and footnotes. (01.08.2026)
  • frequencies(), crosstabs(): Now also export the Excel workbook. (02.08.2026)
  • frequencies(), crosstabs(): When using by variables the special keyword [by_var] is now replaced with the actual by value in the titles and footnotes. (01.08.2026)
  • where.(): Added a html rendered view of the data frame as fallback, if the new window through utils::View() can't be opened. (03.08.2026)
  • where.(): Is now also able to use the new writing style with conditions as characters introduced by ifelse_multi(). (04.08.2026)
  • any_table(): Can now render the tables as html file and show it in a browser window. This can be controlled via the new output options html and excel_html. The function now also returns an additional html element. (07.08.2026)
  • load_file(), load_file_multi(): Can now load fst files by_reference, which means files are not loaded into memory and instead the necessary values are only loaded on demand. (08.08.2026)
  • any_table(), frequencies(), crosstabs(): Added new full_precision parameter, which ignores the decimal places given through the style parameter and outputs all values with all their decimal places. (10.08.2026)
  • recode.(): Can now recode multiple variables into multiple new ones. (10.08.2026)
  • any_table(): Formats can now be applied to pre summarised data. (14.08.2026)
  • rename_multi(): Can now rename variables stored in vectors when passing them like: old_vektor = new_vektor. (14.08.2026)
  • load_file(), load_file_multi(): New keep_var_order parameter enables to keep the original stored variable order, when using keep variables, instead of sorting them in provided order. (14.08.2026)
  • load_file(), save_file(): where now works with old and renamed variable names. Additionally the parameter can now handle the new writing style with conditions as characters introduced by ifelse_multi(). (14.08.2026)
  • save_file(): When passing a named vector or list into the keep parameter, the original variables will directly be renamed. (14.08.2026)
  • summarise_plus(), any_table(), frequencies(), crosstabs(): The print_miss parameter now also has an effect when not using formats. (17.08.2026)

Changed functionality

  • combine_into_workbook(): With the function making use of the new style parameter, the file parameter has been removed. Saving files no works with the style parameter like in the other tabulation functions. (03.08.2026)
  • retain_value(): Without by variable the function now carries forward values through upcoming NA values instead of just writing the first value into all other cells. (08.08.2026)
  • any_table(), frequencies(), crosstabs(), export_with_style(): The functions now set the font family per cell instead of a base font for the whole workbook. This enables different fonts per sheet in multi sheet workbooks, if the sheets are created with separate calls. (08.08.2026)
  • recode_multi(): convert parameter is now set to TRUE by default. (11.08.2026)
  • build_master(): Uses a new compact layout as default. Additionally the full layout can now only be created as a whole. (13.08.2026)

Removed

  • get_integer_length(): There is no real benefit in this function. (18.07.2026)

Fixed

  • any_table(): Variables generated with the compute parameter now receive a default statistics extension, if they are missing one, so that the column header is generated correctly and a number format is applied. (17.07.2026)
  • mark_case(): When marking last cases and the last expression within the by variable was NA, then the last case in the second to last expression became NA instead of TRUE. This is fixed now. (18.07.2026)
  • any_table(), frequencies(), crosstabs(), export_with_style(): When different title or footnote styles where used, they were only applied, if multiple colors where used. Otherwise the formatting broke. This is fixed now. Additionally the code is now simplified and streamlined. (22.07.2026)
  • any_table(), frequencies(), crosstabs(): The additional by title is now also taken into account with individual styling, when multiple titles are present. (22.07.2026)
  • import_data(): Fixed a Problem with encoding. (22.07.2026)
  • close_file(): Now sets the file entry in the global list of style elements actually to NULL instead of removing it. (24.07.2026)
  • any_table(), summarise_plus(): Now keep on running and throw a warning, if a character variable is passed as values, instead of throwing a cryptic error. (30.07.2026)
  • import_multi(): Ran into an error when trying to import a not existing Excel workbook. Now the file path is checked before. (30.07.2026)
  • convert_factor(): Now uses unique() instead of collapse:unique() to identify german umlauts as they are seen on screen and not as they are stored in memory, which caused errors. (31.07.2026)
  • frequencies(): When using interval formats without weight, the sum columns where displayed even though they were equal to the freq columns. This is fixed now. (31.07.2026)
  • any_table(), frequencies(), crosstabs(), export_with_style(): Removed the extra empty row over the tables when no titles where set. Additionally there are no more empty named regions for titles and footnotes, if they are not present. (02.08.2026)
  • combine_into_workbook(): Now uses the global options for print and monitor parameter. (02.08.2026)
  • any_table(): pct_block values are now rounded. (07.08.2026)
  • where.(): Now shows the full data frame when condition is NULL instead of throwing an error. (08.08.2026)
  • if.(): The function crashed when NA was assigned to a variable. NA is now assigned. (08.08.2026)
  • ifelse_multi.(): When NA was assigned to a variable, all values became NA instead of just the ones for which the condition was TRUE. This is fixed now. (08.08.2026)
  • any_table(): The column header got corrupted, if value variables had underscores in their names and were used in combination with pct_block. This is fixed now. (10.08.2026)
  • any_table(): When using the pct_block parameter and formats have overlapping values, then they now will be kept in user provided order. (10.08.2026)
  • Every function, that is able to apply formats, now keeps original values if they are not captured by the applied formats instead of setting uncovered values zo NA. (11.08.2026)
  • recode.(): Now can also handle the "other" keyword. (11.08.2026)
  • any_table(): pct_block percentages are now calculated on unrounded sums, to have maximum precision. (11.08.2026)

Additionally

  • any_table(), frequencies(), crosstabs(), export_with_style(): Extended titles and footnotes description according to the new functionality. (22.07.2026)
  • frequencies(), crosstabs(): Added some new messages on the styling progress. (22.07.2026)
  • any_table(), frequencies(), crosstabs(), export_with_style(): Added named regions for titles, main title, footnotes, table header and row headers. (22.07.2026)
  • Cleanup of a partial matches. (22.07.2026, thanks to @JanMarvin and @olivroy)
  • stack_data(): Swapped out a copypasta error message with the right one. (22.07.2026)
  • combine_into_workbook(): Added example on how to save a file. (03.08.2026)
  • dummy_data(): NUTS2 variable is now stored as an integer. (03.08.2026)
  • load_file(): Added example which shows how to directly rename variables. (03.08.2026)
  • dummy_data(): NUTS3 variable is now stored as an integer. (05.08.2026)
  • New suggested package yyjsonr added, which is required, for the new html view of where.(). (08.08.2026)
  • rename_multi(): Clarified error message on old variable names not found in data frame. (08.08.2026)
  • any_table(): Updated pct_block parameter description and examples to make it more clear how this parameter works and has to be used. (10.08.2026)
  • any_table(): Now uses html output as fallback in case Excel is not available. (13.08.2026)
  • Minimum openxlsx2 version is now 1.29, which fixes a bug that caused damaged output when tabulating with by-Variables and print_miss. (20.08.2026)