Skip to content

qol 1.3.3 - CRAN release

Latest

Choose a tag to compare

@s3rdia s3rdia released this 16 Jul 19:34

Version 1.3.3 brings yet another if function with the twist of beeing able to write SAS style syntax in the conditions. any_table() also received some new additions. And of course there are the usual bug fixes. Some of the highlights are shown here in a bit more detail: https://s3rdia.github.io/qol_blog/posts/13.%20Update%201.3.3/

New functions

  • ifelse_multi(): A variation of the ifelse() function which can handle multiple conditions in one go. The function takes in the conditions as characters. The conditions are parsed before evaluation to enable SAS like writing styles. (20.06.2026)

Renamed functions

  • stack_data(): set was renamed to prevent masking errors in combination with data.table. (03.07.2026)

New functionality

  • if.(), else_if.(): Are now also able to use the new writing style with conditions as characters introduced by ifelse_multi(). (20.06.2026)
  • any_table(): With the new compute parameter all possibilities of the compute.() function can be used within any_table(). (26.06.2026)
  • any_table(): order_by parameter now allows to input a vector of variable names. (26.06.2026)
  • any_table(), summarise_plus(): Variable combinations in rows, columns and types can now also take in variable combinations inside the brackets like "state + (age, sex + education, first_person)". (26.06.2026)
  • All functions with filepaths: Wherever a file path or name can be passed, macro variables can be used inside the path or name. (06.07.2026)
  • any_table(), summarise_plus(): It is now possible to specify per variable which statistics should be output. Instead of passing a vector of statistics into the statistics parameter, it can now also be a named list of variable names, where the list entry names are the statistics and the list elements the variable names or vectors of variable names. (07.07.2026)

Changed functionality

  • any_table(), summarise_plus(): Variable combinations in rows, columns and types like "state + (age, sex + education, first_person)", now have to use commas as separators in the brackets. (26.06.2026)
  • import_data(): Now uses Latin-1 encoding. (01.07.2026)
  • any_table(), frequencies(), crosstabs(), export_with_style(): Now the whole background is filled white as default. The new default is set in excel_output_style(). (03.07.2026)
  • any_table(): When by variables are provided that are also part of the row or column variables, the function now throws a warning instead of an error and keeps running without by variables. (07.07.2026)

Fixed

  • multi_join(): Before joining it is now checked whether there will be duplicate variable names after the join. If so, these variables will be dropped before joining. Otherwise it was possible that a variable could show up in the final data frame with the exact same name multiple times. (21.06.2026)
  • any_table(): The statistic sum_wgt couldn't be renamed correctly. It can now be renamed by just doing stat_labels = list("sum" = "Some label"). (26.06.2026)
  • stack_data(): When a data frame and a list was input, the function tried to hack the list into one of the data frame columns. Now all lists are flattened and data frames extracted to prevent this behaviour. (03.07.2026)
  • print_start_message(): Now doesn't reset start timer anymore when message is suppressed. (04.07.2026)
  • print_start_message(): Doesn't reset message stack anymore when called in a deeply nested situation, which was caused by the optimization introduced in the last update. (06.07.2026)
  • any_table(), frequencies(), crosstabs(), export_with_style(): Footnote heights are applied again. (06.07.2026)
  • export_with_style(): Excel number stored as text error is now ignored for the whole table. (06.07.2026)
  • interval_format(): include_lower now works as intended and doesn't include the lower bound anymore. (07.07.2026)

Optimization

  • summarise_plus(): Brought percentiles up to more speed. (17.06.2026)
  • I underestimated how big in size the call stack can get depending on what functions are called. Therefore the message stack now doesn't receive the full call stack per message anymore but a condensed version and just as a list of character strings. (04.07.2026)
  • summarise_plus(): If types are selected, the loop to calculate all the combinations is now aborted early, if the maximum specified combination depth is surpassed. (07.07.2026)

Additionally

  • multi_join(): Now displays the actual data frame names to be joined instead of just an iterative number in the console. (21.06.2026)
  • any_table(): Received some additional messages for computing stats. (26.06.2026)
  • any_table(): Received some additional messages for computing stats. (26.06.2026)
  • summarise_plus(): Added example for type combinations. (26.06.2026)
  • Minimum openxlsx2 version is now 1.28, which allows a faster background fill. (03.07.2026)
  • load_file_multi(): Added a message when files are stacked. (04.07.2026)
  • any_table(), frequencies(), export_with_style(): Output from these functions received a class name. (07.07.2026)