From a93e09405c19cce184390cd3f3fb6811248a86b0 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Tue, 22 Apr 2025 14:03:08 +0200 Subject: [PATCH 1/9] remove lightswitch --- _pkgdown.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_pkgdown.yml b/_pkgdown.yml index 2f3350af..586880bb 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -14,7 +14,7 @@ navbar: bg: primary structure: left: [intro, reference, articles, roadmap, q_a, news] - right: [search, github, lightswitch] + right: [search, github] components: roadmap: text: Roadmap From 512fe1ced5bd56d03b50e35d40c964f24ceabcb3 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Wed, 23 Apr 2025 14:23:34 +0200 Subject: [PATCH 2/9] a logo is here! --- README.md | 4 +++- inst/apps/FreesearchR/www/favicon.ico | Bin 31345 -> 28511 bytes inst/apps/FreesearchR/www/favicon.png | Bin 31345 -> 28511 bytes inst/apps/FreesearchR/www/intro.md | 16 ++++++++++------ .../FreesearchR/www/logo-text-white-250.png | Bin 0 -> 22712 bytes logo-text-white-250.png | Bin 0 -> 22712 bytes 6 files changed, 13 insertions(+), 7 deletions(-) create mode 100644 inst/apps/FreesearchR/www/logo-text-white-250.png create mode 100644 logo-text-white-250.png diff --git a/README.md b/README.md index 1711fb3e..d12c9105 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# FreesearchR +# FreesearchR [![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental) @@ -48,3 +48,5 @@ Like any other project, this project was never possible without the great work o - [gtsummary](https://www.danieldsjoberg.com/gtsummary/): superb and flexible way to create publication-ready analytical and summary tables. - [dreamRs](https://github.com/dreamRs): maintainers of a broad selection of great extensions and tools for [Shiny](https://shiny.posit.co/). + +This project was all written by a human and not by any AI-based tools. diff --git a/inst/apps/FreesearchR/www/favicon.ico b/inst/apps/FreesearchR/www/favicon.ico index 569ed92cd94418590379faa32698cbe1291c9f65..9bd768757ffb22ed490608644496d34d30922d9b 100644 GIT binary patch delta 27871 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 delta 30728 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

k)ML*w9#zcik9voZ`> za^MWH3{TTu;i=nu9}KUJ>rvOK2%q)WmrTUH)+Z9M*+){7y&D$xR5tohs&$@mvE69% ze{!IxvacSPGy-mqdBeEQE(#ynjb&L4F@yTR}a} z#=4#|F2s6i2Ji5_GHwENXF(`%2^a&>irsIentqdjIvAF-IYgH#iy>9+NsG&hT>~+- zMZt2f(=1dCSu2FBA}AA9b)z`$x=Uj)RH|3lS)7`O&L>0u&ZvFyGr7FX|EIXYvXR)G;E#?C6;kN_vC_bwx8^L#e7A%zOv5ofP#>SX{Wc(&S+NoG^3Q`$ z7OKpE>EZSAW$|LKyn+?3byJV((U7NUn=v=Ai{snO zdhL<8kP!WPbHe^=ww?L9!q3+;3!nRS>%E?Sg1Hgf%CES%a~lw56DDP@Ns{eWqNca> z_deV!wGG`Ba5}ReZ)W40IET%Hu(tT+(MV-o+0Mj!JKY)c(HSl1Cp_8}%zsH|LJ6@R2abnRP$j z8$36M1)1qzMx_UB58m0sleUH@;^O=v0-?8yl0r%6MkWu{M}OdACv23$3>l7ny`WM6 zww3WHJdC{eM{y$b!>6=BsE!~6^-QKmQ)VVk#U0c$c<0-!CIgC}fp(Au%Om{77GUey zSlV{ujVT(^K}?iQEdFeQqQ@){>oPuobgdFtU>rdLQ4YfMgyzaXDU{meo&z5%*P1aK zJ~7ARbT0fdLuS`le2z=~8k;kP;!42mi#Ltp=jnfz9vOI|L<^^=!c@%RQ0R0D*l{Kf ziZex|SaXgz*waOGz!$nG2esxny2`3lk^;uwd=?F{PJs$=N98&#jz7U3bYTKs$l^rj z2s7ux+{OVizQK084s+%&U)WD`{JF?i)Th67Af`S!;yA~kB^Q)@(H2!QDb4_z931jNisUWdzSsW_(Yll9>r?nH5GFx3y(hhy^}N#+ zzf5*Blat_b=piV*gVX3V!_^M#4i>gL9P=Z*G?m&5Cm)-`?LjivsJJGOt;2LG#X*=J z6A;6@h?}N7Dz9sSPOZ3pqq%?CYfPwRfZRw!ti}+}#hj$vmt2h|8Sq4_ZAc4}zCEly zXcG5HZK&?!(Z7;#X<#Cj}GX)#sU-F)mvd z6cbG(AvWV3@RJkF6&wKYuc{sEjxY;XKXZ8Gq;8$&pKS$ip&p$)s)(FBV~;t7MKf;? ztr*vPE4^v<@W>#_1#0qZD}B?VMw`&YoQ-oK4v2UixEMxM^dZ4VsFaXgyA1TukEJqA zd+a8XyNw7k+J8fQUVAKj+6VHzyezv~7PG$Vgzzz?FR3Ssfos5*y}{K0eM>02Hn`}g zMEf44%m6o0h7WzTgq^rDp3~S*gfVzXp6LHRw2wa?n;4Esi|t~LQAgKb7fa58`~l6X zKZ?btFkKBa($8A8e6Y@4tKkk2p;OPqT?1Lhp511$9;706ReCK!i3mw+%O0m%b+j+O zh>m5-7Plb(zx#mfX`d30hDQP#&s7TAl?Bn?#q0 zH}+x%*wvfRm4CUx?8Sthpl{>O;E9dhOO=RR^+$m?XEzv~jRIBZkHGRGUH&{L8KeUA z&;M9<*A@7MOUJSZNqvZAX8iS<8KHG$7_`>!n;8eDTCNaAPV^$-Xz=$S2WCCR73;ew zw)nPWmQDrScIC7aOf2(Lkry)#G+cg=MwI>og9-?csF6P@3V7TKM5EiENVN7TrF@4a zjaSoIix!5`1n>9ejHsx1yondytS0cX?S4^q?ZpHK{CCIVn}uq7baOmEl;XA!AlwMT z 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 Q2?9b^QbD3p%)sw|08Z4^O#lD@ diff --git a/inst/apps/FreesearchR/www/favicon.png b/inst/apps/FreesearchR/www/favicon.png index 569ed92cd94418590379faa32698cbe1291c9f65..9bd768757ffb22ed490608644496d34d30922d9b 100644 GIT binary patch delta 27871 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 delta 30728 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

k)ML*w9#zcik9voZ`> za^MWH3{TTu;i=nu9}KUJ>rvOK2%q)WmrTUH)+Z9M*+){7y&D$xR5tohs&$@mvE69% ze{!IxvacSPGy-mqdBeEQE(#ynjb&L4F@yTR}a} z#=4#|F2s6i2Ji5_GHwENXF(`%2^a&>irsIentqdjIvAF-IYgH#iy>9+NsG&hT>~+- zMZt2f(=1dCSu2FBA}AA9b)z`$x=Uj)RH|3lS)7`O&L>0u&ZvFyGr7FX|EIXYvXR)G;E#?C6;kN_vC_bwx8^L#e7A%zOv5ofP#>SX{Wc(&S+NoG^3Q`$ z7OKpE>EZSAW$|LKyn+?3byJV((U7NUn=v=Ai{snO zdhL<8kP!WPbHe^=ww?L9!q3+;3!nRS>%E?Sg1Hgf%CES%a~lw56DDP@Ns{eWqNca> z_deV!wGG`Ba5}ReZ)W40IET%Hu(tT+(MV-o+0Mj!JKY)c(HSl1Cp_8}%zsH|LJ6@R2abnRP$j z8$36M1)1qzMx_UB58m0sleUH@;^O=v0-?8yl0r%6MkWu{M}OdACv23$3>l7ny`WM6 zww3WHJdC{eM{y$b!>6=BsE!~6^-QKmQ)VVk#U0c$c<0-!CIgC}fp(Au%Om{77GUey zSlV{ujVT(^K}?iQEdFeQqQ@){>oPuobgdFtU>rdLQ4YfMgyzaXDU{meo&z5%*P1aK zJ~7ARbT0fdLuS`le2z=~8k;kP;!42mi#Ltp=jnfz9vOI|L<^^=!c@%RQ0R0D*l{Kf ziZex|SaXgz*waOGz!$nG2esxny2`3lk^;uwd=?F{PJs$=N98&#jz7U3bYTKs$l^rj z2s7ux+{OVizQK084s+%&U)WD`{JF?i)Th67Af`S!;yA~kB^Q)@(H2!QDb4_z931jNisUWdzSsW_(Yll9>r?nH5GFx3y(hhy^}N#+ zzf5*Blat_b=piV*gVX3V!_^M#4i>gL9P=Z*G?m&5Cm)-`?LjivsJJGOt;2LG#X*=J z6A;6@h?}N7Dz9sSPOZ3pqq%?CYfPwRfZRw!ti}+}#hj$vmt2h|8Sq4_ZAc4}zCEly zXcG5HZK&?!(Z7;#X<#Cj}GX)#sU-F)mvd z6cbG(AvWV3@RJkF6&wKYuc{sEjxY;XKXZ8Gq;8$&pKS$ip&p$)s)(FBV~;t7MKf;? ztr*vPE4^v<@W>#_1#0qZD}B?VMw`&YoQ-oK4v2UixEMxM^dZ4VsFaXgyA1TukEJqA zd+a8XyNw7k+J8fQUVAKj+6VHzyezv~7PG$Vgzzz?FR3Ssfos5*y}{K0eM>02Hn`}g zMEf44%m6o0h7WzTgq^rDp3~S*gfVzXp6LHRw2wa?n;4Esi|t~LQAgKb7fa58`~l6X zKZ?btFkKBa($8A8e6Y@4tKkk2p;OPqT?1Lhp511$9;706ReCK!i3mw+%O0m%b+j+O zh>m5-7Plb(zx#mfX`d30hDQP#&s7TAl?Bn?#q0 zH}+x%*wvfRm4CUx?8Sthpl{>O;E9dhOO=RR^+$m?XEzv~jRIBZkHGRGUH&{L8KeUA z&;M9<*A@7MOUJSZNqvZAX8iS<8KHG$7_`>!n;8eDTCNaAPV^$-Xz=$S2WCCR73;ew zw)nPWmQDrScIC7aOf2(Lkry)#G+cg=MwI>og9-?csF6P@3V7TKM5EiENVN7TrF@4a zjaSoIix!5`1n>9ejHsx1yondytS0cX?S4^q?ZpHK{CCIVn}uq7baOmEl;XA!AlwMT z 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 Q2?9b^QbD3p%)sw|08Z4^O#lD@ diff --git a/inst/apps/FreesearchR/www/intro.md b/inst/apps/FreesearchR/www/intro.md index b7c83771..0b36c872 100644 --- a/inst/apps/FreesearchR/www/intro.md +++ b/inst/apps/FreesearchR/www/intro.md @@ -1,4 +1,4 @@ -# Welcome +# Welcome This is the ***FreesearchR*** data analysis tool. We intend the ***FreesearchR*** to be a powerful and free tool for easy data evaluation and analysis at the hands of the clinician. If you need more advanced tools for regression models or plotting, you'll probably be better off using *R* or similar directly on your own machine. @@ -6,7 +6,7 @@ By intention, this tool has been designed to be simple to use with a minimum of There are some simple steps to go through (see corresponding tabs in the top): -1. Import data (a spreadsheet/file on your machine, direct export from a REDCap server, or a local file provided with a package) to get started. +1. Import data to get started. This can be a spreadsheet/file on your machine, direct export from a REDCap server, sample data or data from a your local environment if run locally. 1. Data inspection and modification (change variable classes, create new variables (categorical from numeric or time data, or completely new variables from the data) @@ -20,10 +20,14 @@ There are some simple steps to go through (see corresponding tabs in the top): - Plot regression analysis coefficients - - Evaluation of model assumptions + - Evaluate model assumptions -1. Export the the analyses results for MS Word or [LibreOffice](https://www.libreoffice.org/) as well as the data with preserved metadata. +1. Export results -The full [project documentation is here](https://agdamsbo.github.io/FreesearchR/) for documenting the project, functions, road map and more. If you're interested in the source code, then [everything is open and you are free to read, copy, modify and improve](https://github.com/agdamsbo/FreesearchR), and please let us know if you want to contribute! + - Descriptive and regression analyses results for MS Word or [LibreOffice](https://www.libreoffice.org/) + + - Modified data with preserved metadata + + - Code to recreate all steps locally -Contributions can be reporting issues, suggesting new functionality, improving code or any other feedback. [It all goes here](https://github.com/agdamsbo/FreesearchR/issues). +The full [project documentation is here](https://agdamsbo.github.io/FreesearchR/) and all code used is [freely available to read, copy, modify and improve](https://github.com/agdamsbo/FreesearchR) under an [open source license](https://github.com/agdamsbo/FreesearchR/blob/main/LICENSE.md)! Contributions are welcome and much appreciated and can be reporting issues, suggesting new functionality, improving code or any other feedback [here](https://github.com/agdamsbo/FreesearchR/issues). diff --git a/inst/apps/FreesearchR/www/logo-text-white-250.png b/inst/apps/FreesearchR/www/logo-text-white-250.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f9f99ce3a8c12f5e079e7b0696b62e1bb28787 GIT binary patch literal 22712 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 Date: Wed, 23 Apr 2025 14:24:07 +0200 Subject: [PATCH 3/9] limiting dependencies --- DESCRIPTION | 16 ++++-------- R/data_plots.R | 4 +-- R/helpers.R | 4 +-- R/import-file-ext.R | 63 ++++++++++++++++++++++++++------------------- 4 files changed, 46 insertions(+), 41 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index a951fca0..b3a06126 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -15,9 +15,9 @@ Imports: dplyr, glue, gtsummary, - haven, here, quarto, + haven, readODS, readr, shiny, @@ -29,17 +29,14 @@ Imports: parameters, DT, performance, - ggiraph, qqplotr, see, patchwork, easystats, DHARMa, IDEAFilter, - sparkline, datamods, toastui, - webshot, lubridate, bsicons, thematic, @@ -48,18 +45,11 @@ Imports: classInt, htmltools, rlang, - data.table, apexcharter, esquisse, - janitor, flextable, gt, - kableExtra, rankinPlot, - sjPlot, - gvlma, - psych, - jtools, Hmisc, ggstats, rempsyc, @@ -74,6 +64,7 @@ Suggests: styler, devtools, rhub, + webshot, usethis, roxygen2, pak, @@ -87,3 +78,6 @@ URL: https://github.com/agdamsbo/FreesearchR, https://agdamsbo.github.io/Freesea BugReports: https://github.com/agdamsbo/FreesearchR/issues VignetteBuilder: knitr Config/testthat/edition: 3 +Depends: + R (>= 3.5) +LazyData: true diff --git a/R/data_plots.R b/R/data_plots.R index 55856ca4..d93b0ead 100644 --- a/R/data_plots.R +++ b/R/data_plots.R @@ -695,7 +695,7 @@ line_break <- function(data, lineLength = 20, force = FALSE) { #' @export #' wrap_plot_list <- function(data, tag_levels = NULL) { - if (ggplot2::is.ggplot(data[[1]])) { + if (ggplot2::is_ggplot(data[[1]])) { if (length(data) > 1) { out <- data |> (\(.x){ @@ -732,7 +732,7 @@ wrap_plot_list <- function(data, tag_levels = NULL) { align_axes <- function(...) { # https://stackoverflow.com/questions/62818776/get-axis-limits-from-ggplot-object # https://github.com/thomasp85/patchwork/blob/main/R/plot_multipage.R#L150 - if (ggplot2::is.ggplot(..1)) { + if (ggplot2::is_ggplot(..1)) { ## Assumes list of ggplots p <- list(...) } else if (is.list(..1)) { diff --git a/R/helpers.R b/R/helpers.R index aed6b820..e9f8394b 100644 --- a/R/helpers.R +++ b/R/helpers.R @@ -87,7 +87,7 @@ read_input <- function(file, consider.na = c("NA", '""', "")) { if (ext == "csv") { df <- readr::read_csv(file = file, na = consider.na) } else if (ext %in% c("xls", "xlsx")) { - df <- openxlsx2::read_xlsx(file = file, na.strings = consider.na) + df <- readxl::read_excel(file = file, na.strings = consider.na) } else if (ext == "dta") { df <- haven::read_dta(file = file) } else if (ext == "ods") { @@ -428,7 +428,7 @@ sort_by <- function(x, y, na.rm = FALSE, ...) { get_ggplot_label <- function(data, label) { - assertthat::assert_that(ggplot2::is.ggplot(data)) + assertthat::assert_that(ggplot2::is_ggplot(data)) data$labels[[label]] } diff --git a/R/import-file-ext.R b/R/import-file-ext.R index 4c3d77b2..5298ec49 100644 --- a/R/import-file-ext.R +++ b/R/import-file-ext.R @@ -242,7 +242,7 @@ import_file_server <- function(id, req(input$file) if (!all(input$sheet %in% temporary_rv$sheets)) { - sheets <- 1 + sheets <- 1 } else { sheets <- input$sheet } @@ -298,31 +298,33 @@ import_file_server <- function(id, ) observeEvent(input$see_data, { - tryCatch({ - datamods:::show_data(default_parsing(temporary_rv$data), title = datamods:::i18n("Imported data"), type = show_data_in) - }, - # warning = function(warn) { - # showNotification(warn, type = "warning") - # }, - error = function(err) { - showNotification(err, type = "err") - } + tryCatch( + { + datamods:::show_data(default_parsing(temporary_rv$data), title = datamods:::i18n("Imported data"), type = show_data_in) + }, + # warning = function(warn) { + # showNotification(warn, type = "warning") + # }, + error = function(err) { + showNotification(err, type = "err") + } ) }) output$table <- toastui::renderDatagrid2({ req(temporary_rv$data) - tryCatch({ - toastui::datagrid( - data = setNames(head(temporary_rv$data, 5),make.names(names(temporary_rv$data),unique = TRUE)), - theme = "striped", - colwidths = "guess", - minBodyHeight = 250 - ) - }, - error = function(err) { - showNotification(err, type = "err") - } + tryCatch( + { + toastui::datagrid( + data = setNames(head(temporary_rv$data, 5), make.names(names(temporary_rv$data), unique = TRUE)), + theme = "striped", + colwidths = "guess", + minBodyHeight = 250 + ) + }, + error = function(err) { + showNotification(err, type = "err") + } ) }) @@ -418,13 +420,22 @@ import_xls <- function(file, sheet, skip, na.strings) { sheet |> purrr::map(\(.x){ - openxlsx2::read_xlsx( - file = file, + readxl::read_excel( + path = file, sheet = .x, - skip_empty_rows = TRUE, - start_row = skip - 1, - na.strings = na.strings + na = na.strings, + skip = skip, + .name_repair = "unique_quiet", + trim_ws = TRUE ) + + # openxlsx2::read_xlsx( + # file = file, + # sheet = .x, + # skip_empty_rows = TRUE, + # start_row = skip - 1, + # na.strings = na.strings + # ) }) |> purrr::reduce(dplyr::full_join) }, From aa94a67707eab8c70f57072c05e12f55584ce64f Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Wed, 23 Apr 2025 14:24:32 +0200 Subject: [PATCH 4/9] sharing session info --- R/sysdata.rda | Bin 0 -> 2052 bytes SESSION.md | 166 ++++++++++++++++++++++++++++++++++++++++++ vignettes/session.Rmd | 35 +++++++++ 3 files changed, 201 insertions(+) create mode 100644 R/sysdata.rda create mode 100644 SESSION.md create mode 100644 vignettes/session.Rmd diff --git a/R/sysdata.rda b/R/sysdata.rda new file mode 100644 index 0000000000000000000000000000000000000000..e84cdfe73504282bcdb8123050bad2341d7b991f GIT binary patch literal 2052 zcmV+f2>bU!T4*^jL0KkKSq3-blmHSff589$Xaz!l|KNXXp1{BV|L{Np2m#;--xqdS zxbSf*niK;0;qpWZlr=I0(WXrRjFSx!Jt^fGJvA8(00E)u29GE;PYI@`lW8(0nrS~I zdL+mi00000007lL5Je~e0017K00000001P?NQ9GZP|(v&00w{n003#A007cap_4{| zrhsS-0000013&-*B_O7oRP$8yk5TFX(X@aX0gwYg12UQnmP(t+kfCrFn5YGH&=3n? zfE{eq6%&hk(x3z?sD>Xe<33FI2UIn9ef(S}98K6JGD_$LA$f0VZCkB%dV)A0AfcKg zr$$?Jf2pS}oE4M&KdIZ^GWf&-VdMMI)kXp9q#D)g#*-)*1b(sQ6Iu+R?5<@bfxh`{ zCYhO(S|ujor%Ga*iaYAe(TG8{8Az#jc7g*45$Q-i;LE+aV*9tg@byKC%1lICd`R^p_cc~dhc8*jL0tu~9+H^){PXT7?e z9(L%(#MczMMihV$gkV7~i-(!7S2|h;h6*dNB8Wr1fS{^H z6RF~H*4{}=<^sX#wBt!Nts80;j#yTs+OlchZtuH}jhZn)Q*_azNpGBn`|VRBU7Ve) zp^lSCY@2c1-wi_;W2T739W<#Fgce~q!kAX&%#0{!0+48M2+9jIuym~GVPg}QOe0c* zuw*t~79MR~peqC_SMt*dtuS3yrGlYWWkJBKS=BlLp?Xj{6Go`a+YT3PXyowQmK?Zj z5R(hYZ8xc7ORZflGQ4fkO6tw@Idp4!W@C_Rmh2l2VM`F*l608T3zmsCr7CkGC5wg( zHK-Dy2^+Ju!wwDKb>*yewY(cL)r`%Gswx>FnUYX(DU3s85xE z>j+dLAjE^spmIQ?ET?+IrGeJ!^>?zAZ?%}=YK@@^5R{Nd2PosK%?LbkSTo92WVj1eG=MoFqzA}}h*5GaAzgn%a=i#AES z!xcpbgi-)d$YT`27rAMQ_O3fxQEg*XG)duhejc6P^L{N&9CW2BD~L4f7dO4qZ@$(D z>`>7#rll!JNd}<2-oy$9{+_4U6bkmecmBLqU8i63y6^G~ye*K(PemjEA^<(Xt|*M? z0w4!hoxmahc3l~c5>D&|14^m0IJa%|DJ%|z(E?Ie)loR3m<&0UFyCKkjA8kCC!QTg zw04OCwQYyavQJ!6zpkPCH4&0LedRjdM}a)DniRf(hPCMijdkFbq(aOD-`irP`Ulm! z3CSL6)$}_A_-3p%Pu7&gEqxMV(e_x&$W%}s=vya=RZ!i|!^Kb#;BhMnRoZ@@bt2N# zII*r*b6_RG8FY)Qd){sxE-eq0*J>_;CW6S)lDTI}mPU$GHINjINw%!q(9z;E8i*nd zHPe);jrni|XsQNYwbdsea*ki&!KjU!vl*FZpcL*=bfdCRP|t9i-@^=}Xu)lA`v<3| zbo1mlB1zG8h#H!^CZfHqe6d1E_Z*6h0A9YHdcvxwRA^H=2Sr1!T?rdxCq z?Tyq0$dls6>hs0rn8L>njw-^~$s|(HS`<`n_c@U5Zm%-44AL8A&Ls>i^YpuR0xu3=2lo?L>_GU6lh2m5a}ZqgFY##w*&4o;p!!z zX^PcA8W1vE$wfH8OpYYPoAvS1`o$GI(Mq@u#y-HfoV!#bcU?j7-ji+E%HsHM$1nR!Z=Ij~P&P>zFh!wvF z9jTKDRa!-T$3B2|z-Kk?VOr(WI9VZ9+-ZmgW`Y`upK;P!%6t}Y*wV>+R?vIOo;bm{ z2tX!$EWzZ;GG9EfZeBc>>QQ4gC~&^IAr;JdN!ThgAUKj9vqbU+yqpe}T}7*F>|WmUp-XW+}pkXb5ap3zbS%!ym_y%FTs zPi~7RK?68mnA5QJ;q0|Ib + %\VignetteIndexEntry{session} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +options(rmarkdown.html_vignette.check_title = FALSE) +``` + +```{r setup} +library(FreesearchR) +``` + +This is the session info on the primary build machine. Inspect loaded packages and the latest build info. + +## Platform info + +```{r} +FreesearchR:::session_data$platform |> knitr::kable() +``` + + +## Libraries + +```{r} +FreesearchR:::session_data$libs|> knitr::kable() +``` From 2d0508220e324b8527e1b294f56927a034c1a9f6 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Wed, 23 Apr 2025 14:24:42 +0200 Subject: [PATCH 5/9] session data --- data-raw/session.R | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 data-raw/session.R diff --git a/data-raw/session.R b/data-raw/session.R new file mode 100644 index 00000000..766ee965 --- /dev/null +++ b/data-raw/session.R @@ -0,0 +1,19 @@ +## code to prepare `session` dataset goes here + +session <- devtools::session_info() + +platform <- c(session$platform, + "FreesearchR"=paste(gsub("Version: ","",readLines(here::here('DESCRIPTION'))[3]),format(Sys.time(),format = '%y%m%d'),sep='.')) + +platform <- data.frame(option=names(platform),value=Reduce(c,platform)) + +libs <- as.data.frame(session$packages)[names(session$packages) %in% c("package","loadedversion","date","source")] + +rownames(libs) <- NULL + +session_data <- list( + platform=platform, + libs=libs +) + +usethis::use_data(session_data,internal = TRUE, overwrite = TRUE) From 74897930327a1c4fec4ae1d299d69f07626771e4 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Wed, 23 Apr 2025 14:25:38 +0200 Subject: [PATCH 6/9] updating docs --- .Rbuildignore | 1 + R/app_version.R | 2 +- _pkgdown.yml | 1 + inst/apps/FreesearchR/app.R | 156 ++-- inst/apps/FreesearchR/ui.R | 20 +- man/data-plots.Rd | 15 +- renv.lock | 1217 ++---------------------------- tests/testthat/test-data_plots.R | 4 +- vignettes/data-types.Rmd | 1 + 9 files changed, 171 insertions(+), 1246 deletions(-) diff --git a/.Rbuildignore b/.Rbuildignore index ed3805c2..3a9512e9 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -12,3 +12,4 @@ ^docs$ ^pkgdown$ ^dev$ +^data-raw$ diff --git a/R/app_version.R b/R/app_version.R index d49df0c2..1fbe1ecb 100644 --- a/R/app_version.R +++ b/R/app_version.R @@ -1 +1 @@ -app_version <- function()'Version: 25.4.3.250422' +app_version <- function()'v25.4.3.250423' diff --git a/_pkgdown.yml b/_pkgdown.yml index 586880bb..decca444 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -8,6 +8,7 @@ template: base_font: {google: "Montserrat"} heading_font: {google: "Public Sans"} # code_font: {google: "Open Sans"} + # Adding the switch destroys the theme colors light-switch: false navbar: diff --git a/inst/apps/FreesearchR/app.R b/inst/apps/FreesearchR/app.R index 293ccdc1..5c205b31 100644 --- a/inst/apps/FreesearchR/app.R +++ b/inst/apps/FreesearchR/app.R @@ -10,7 +10,7 @@ #### Current file: /Users/au301842/FreesearchR/R//app_version.R ######## -app_version <- function()'Version: 25.4.3.250422' +app_version <- function()'v25.4.3.250423' ######## @@ -1801,7 +1801,7 @@ line_break <- function(data, lineLength = 20, force = FALSE) { #' @export #' wrap_plot_list <- function(data, tag_levels = NULL) { - if (ggplot2::is.ggplot(data[[1]])) { + if (ggplot2::is_ggplot(data[[1]])) { if (length(data) > 1) { out <- data |> (\(.x){ @@ -1838,7 +1838,7 @@ wrap_plot_list <- function(data, tag_levels = NULL) { align_axes <- function(...) { # https://stackoverflow.com/questions/62818776/get-axis-limits-from-ggplot-object # https://github.com/thomasp85/patchwork/blob/main/R/plot_multipage.R#L150 - if (ggplot2::is.ggplot(..1)) { + if (ggplot2::is_ggplot(..1)) { ## Assumes list of ggplots p <- list(...) } else if (is.list(..1)) { @@ -2497,7 +2497,7 @@ read_input <- function(file, consider.na = c("NA", '""', "")) { if (ext == "csv") { df <- readr::read_csv(file = file, na = consider.na) } else if (ext %in% c("xls", "xlsx")) { - df <- openxlsx2::read_xlsx(file = file, na.strings = consider.na) + df <- readxl::read_excel(file = file, na.strings = consider.na) } else if (ext == "dta") { df <- haven::read_dta(file = file) } else if (ext == "ods") { @@ -2838,7 +2838,7 @@ sort_by <- function(x, y, na.rm = FALSE, ...) { get_ggplot_label <- function(data, label) { - assertthat::assert_that(ggplot2::is.ggplot(data)) + assertthat::assert_that(ggplot2::is_ggplot(data)) data$labels[[label]] } @@ -3312,7 +3312,7 @@ import_file_server <- function(id, req(input$file) if (!all(input$sheet %in% temporary_rv$sheets)) { - sheets <- 1 + sheets <- 1 } else { sheets <- input$sheet } @@ -3368,31 +3368,33 @@ import_file_server <- function(id, ) observeEvent(input$see_data, { - tryCatch({ - datamods:::show_data(default_parsing(temporary_rv$data), title = datamods:::i18n("Imported data"), type = show_data_in) - }, - # warning = function(warn) { - # showNotification(warn, type = "warning") - # }, - error = function(err) { - showNotification(err, type = "err") - } + tryCatch( + { + datamods:::show_data(default_parsing(temporary_rv$data), title = datamods:::i18n("Imported data"), type = show_data_in) + }, + # warning = function(warn) { + # showNotification(warn, type = "warning") + # }, + error = function(err) { + showNotification(err, type = "err") + } ) }) output$table <- toastui::renderDatagrid2({ req(temporary_rv$data) - tryCatch({ - toastui::datagrid( - data = setNames(head(temporary_rv$data, 5),make.names(names(temporary_rv$data),unique = TRUE)), - theme = "striped", - colwidths = "guess", - minBodyHeight = 250 - ) - }, - error = function(err) { - showNotification(err, type = "err") - } + tryCatch( + { + toastui::datagrid( + data = setNames(head(temporary_rv$data, 5), make.names(names(temporary_rv$data), unique = TRUE)), + theme = "striped", + colwidths = "guess", + minBodyHeight = 250 + ) + }, + error = function(err) { + showNotification(err, type = "err") + } ) }) @@ -3488,13 +3490,22 @@ import_xls <- function(file, sheet, skip, na.strings) { sheet |> purrr::map(\(.x){ - openxlsx2::read_xlsx( - file = file, + readxl::read_excel( + path = file, sheet = .x, - skip_empty_rows = TRUE, - start_row = skip - 1, - na.strings = na.strings + na = na.strings, + skip = skip, + .name_repair = "unique_quiet", + trim_ws = TRUE ) + + # openxlsx2::read_xlsx( + # file = file, + # sheet = .x, + # skip_empty_rows = TRUE, + # start_row = skip - 1, + # na.strings = na.strings + # ) }) |> purrr::reduce(dplyr::full_join) }, @@ -3738,13 +3749,14 @@ plot_box <- function(data, pri, sec, ter = NULL) { #' @export #' #' @examples +#' mtcars |> plot_box_single("mpg") #' mtcars |> plot_box_single("mpg","cyl") plot_box_single <- function(data, pri, sec=NULL, seed = 2103) { set.seed(seed) if (is.null(sec)) { sec <- "All" - data[[y]] <- sec + data[[sec]] <- sec } discrete <- !data_type(data[[sec]]) %in% "continuous" @@ -4075,7 +4087,7 @@ sankey_ready <- function(data, pri, sec, numbers = "count", ...) { data[c(pri, sec)] <- data[c(pri, sec)] |> dplyr::mutate(dplyr::across(!dplyr::where(is.factor), forcats::as_factor)) - out <- dplyr::count(data, !!dplyr::sym(pri), !!dplyr::sym(sec)) + out <- dplyr::count(data, !!dplyr::sym(pri), !!dplyr::sym(sec), .drop = FALSE) out <- out |> dplyr::group_by(!!dplyr::sym(pri)) |> @@ -4126,9 +4138,17 @@ str_remove_last <- function(data, pattern = "\n") { #' @examples #' ds <- data.frame(g = sample(LETTERS[1:2], 100, TRUE), first = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE)), last = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE))) #' ds |> plot_sankey("first", "last") -#' ds |> plot_sankey("first", "last", color.group = "y") -#' ds |> plot_sankey("first", "last", z = "g", color.group = "y") -plot_sankey <- function(data, pri, sec, ter = NULL, color.group = "x", colors = NULL) { +#' ds |> plot_sankey("first", "last", color.group = "sec") +#' ds |> plot_sankey("first", "last", ter = "g", color.group = "sec") +#' mtcars |> +#' default_parsing() |> +#' plot_sankey("cyl", "gear", "am", color.group = "pri") +#' ## In this case, the last plot as the secondary variable in wrong order +#' ## Dont know why... +#' mtcars |> +#' default_parsing() |> +#' plot_sankey("cyl", "gear", "vs", color.group = "pri") +plot_sankey <- function(data, pri, sec, ter = NULL, color.group = "pri", colors = NULL) { if (!is.null(ter)) { ds <- split(data, data[ter]) } else { @@ -4136,16 +4156,12 @@ plot_sankey <- function(data, pri, sec, ter = NULL, color.group = "x", colors = } out <- lapply(ds, \(.ds){ - plot_sankey_single(.ds, x = pri, y = sec, color.group = color.group, colors = colors) + plot_sankey_single(.ds, pri = pri, sec = sec, color.group = color.group, colors = colors) }) patchwork::wrap_plots(out) } -default_theme <- function() { - theme_void() -} - #' Beautiful sankey plot #' #' @param color.group set group to colour by. "x" or "y". @@ -4159,15 +4175,26 @@ default_theme <- function() { #' @examples #' ds <- data.frame(g = sample(LETTERS[1:2], 100, TRUE), first = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE)), last = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE))) #' ds |> plot_sankey_single("first", "last") -#' ds |> plot_sankey_single("first", "last", color.group = "y") +#' ds |> plot_sankey_single("first", "last", color.group = "sec") #' data.frame( #' g = sample(LETTERS[1:2], 100, TRUE), #' first = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE)), #' last = sample(c(TRUE, FALSE, FALSE), 100, TRUE) #' ) |> #' plot_sankey_single("first", "last", color.group = "pri") +#' mtcars |> +#' default_parsing() |> +#' str() +#' plot_sankey_single("cyl", "vs", color.group = "pri") plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), colors = NULL, ...) { color.group <- match.arg(color.group) + + data_orig <- data + data[c(pri, sec)] <- data[c(pri, sec)] |> + dplyr::mutate(dplyr::across(dplyr::where(is.factor), forcats::fct_drop)) + + # browser() + data <- data |> sankey_ready(pri = pri, sec = sec, ...) library(ggalluvial) @@ -4177,11 +4204,17 @@ plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), co if (is.null(colors)) { if (color.group == "sec") { - main.colors <- viridisLite::viridis(n = length(levels(data[[sec]]))) + main.colors <- viridisLite::viridis(n = length(levels(data_orig[[sec]]))) + ## Only keep colors for included levels + main.colors <- main.colors[match(levels(data[[sec]]), levels(data_orig[[sec]]))] + secondary.colors <- rep(na.color, length(levels(data[[pri]]))) label.colors <- Reduce(c, lapply(list(secondary.colors, rev(main.colors)), contrast_text)) } else { - main.colors <- viridisLite::viridis(n = length(levels(data[[pri]]))) + main.colors <- viridisLite::viridis(n = length(levels(data_orig[[pri]]))) + ## Only keep colors for included levels + main.colors <- main.colors[match(levels(data[[pri]]), levels(data_orig[[pri]]))] + secondary.colors <- rep(na.color, length(levels(data[[sec]]))) label.colors <- Reduce(c, lapply(list(rev(main.colors), secondary.colors), contrast_text)) } @@ -4199,7 +4232,11 @@ plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), co if (color.group == "sec") { p <- p + ggalluvial::geom_alluvium( - ggplot2::aes(fill = !!dplyr::sym(sec), color = !!dplyr::sym(sec)), + ggplot2::aes( + fill = !!dplyr::sym(sec) # , + ## Including will print strings when levels are empty + # color = !!dplyr::sym(sec) + ), width = 1 / 16, alpha = .8, knot.pos = 0.4, @@ -4211,7 +4248,10 @@ plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), co } else { p <- p + ggalluvial::geom_alluvium( - ggplot2::aes(fill = !!dplyr::sym(pri), color = !!dplyr::sym(pri)), + ggplot2::aes( + fill = !!dplyr::sym(pri) # , + # color = !!dplyr::sym(pri) + ), width = 1 / 16, alpha = .8, knot.pos = 0.4, @@ -4235,7 +4275,7 @@ plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), co labels = group_labels ) + ggplot2::scale_fill_manual(values = colors[-1], na.value = colors[1]) + - ggplot2::scale_color_manual(values = main.colors) + + # ggplot2::scale_color_manual(values = main.colors) + ggplot2::theme_void() + ggplot2::theme( legend.position = "none", @@ -8399,7 +8439,7 @@ ui_elements <- list( shiny::uiOutput(outputId = "column_filter"), shiny::helpText("Variable ", tags$a( "data type", - href = "https://agdamsbo.github.io/FreesearchR/articles/FreesearchR.html", + href = "https://agdamsbo.github.io/FreesearchR/articles/data-types.html", target = "_blank", rel = "noopener noreferrer" ), " filtering."), @@ -8596,15 +8636,13 @@ ui_elements <- list( data_visuals_ui("visuals"), shiny::tagList( bslib::nav_spacer(), - bslib::nav_panel( - title = "Notes", - shiny::fluidRow( - shiny::column(width = 2), - shiny::column( - width = 8, - shiny::markdown(readLines("www/notes_visuals.md")), - shiny::column(width = 2) - ) + bslib::nav_item( + # shiny::img(shiny::icon("book")), + shiny::tags$a( + href = "https://agdamsbo.github.io/FreesearchR/articles/visuals.html", + "Notes (external)", + target = "_blank", + rel = "noopener noreferrer" ) ) ) @@ -8774,11 +8812,11 @@ ui <- bslib::page_fixed( style = "background-color: #14131326; padding: 4px; text-align: center; bottom: 0; width: 100%;", shiny::p( style = "margin: 1", - "Data is only stored for analyses and deleted immediately afterwards." + "Data is only stored for analyses and deleted when the app is closed." ), shiny::p( style = "margin: 1; color: #888;", - "AG Damsbo | v", app_version(), " | ", shiny::tags$a("AGPLv3 license", href = "https://github.com/agdamsbo/FreesearchR/blob/main/LICENSE.md", target = "_blank", rel = "noopener noreferrer"), " | ", shiny::tags$a("Source on Github", href = "https://github.com/agdamsbo/FreesearchR/", target = "_blank", rel = "noopener noreferrer") + shiny::tags$a("AG Damsbo", href = "https://andreas.gdamsbo.dk/", target = "_blank", rel = "noopener noreferrer")," | ", app_version(), " | ", shiny::tags$a("License: AGPLv3", href = "https://github.com/agdamsbo/FreesearchR/blob/main/LICENSE.md", target = "_blank", rel = "noopener noreferrer"), " | ", shiny::tags$a("Source", href = "https://github.com/agdamsbo/FreesearchR/", target = "_blank", rel = "noopener noreferrer") ), ) ) diff --git a/inst/apps/FreesearchR/ui.R b/inst/apps/FreesearchR/ui.R index 6fb9b0da..8dac4454 100644 --- a/inst/apps/FreesearchR/ui.R +++ b/inst/apps/FreesearchR/ui.R @@ -359,15 +359,13 @@ ui_elements <- list( data_visuals_ui("visuals"), shiny::tagList( bslib::nav_spacer(), - bslib::nav_panel( - title = "Notes", - shiny::fluidRow( - shiny::column(width = 2), - shiny::column( - width = 8, - shiny::markdown(readLines("www/notes_visuals.md")), - shiny::column(width = 2) - ) + bslib::nav_item( + # shiny::img(shiny::icon("book")), + shiny::tags$a( + href = "https://agdamsbo.github.io/FreesearchR/articles/visuals.html", + "Notes (external)", + target = "_blank", + rel = "noopener noreferrer" ) ) ) @@ -537,11 +535,11 @@ ui <- bslib::page_fixed( style = "background-color: #14131326; padding: 4px; text-align: center; bottom: 0; width: 100%;", shiny::p( style = "margin: 1", - "Data is only stored for analyses and deleted immediately afterwards." + "Data is only stored for analyses and deleted when the app is closed." ), shiny::p( style = "margin: 1; color: #888;", - "AG Damsbo | v", app_version(), " | ", shiny::tags$a("AGPLv3 license", href = "https://github.com/agdamsbo/FreesearchR/blob/main/LICENSE.md", target = "_blank", rel = "noopener noreferrer"), " | ", shiny::tags$a("Source on Github", href = "https://github.com/agdamsbo/FreesearchR/", target = "_blank", rel = "noopener noreferrer") + shiny::tags$a("AG Damsbo", href = "https://andreas.gdamsbo.dk/", target = "_blank", rel = "noopener noreferrer")," | ", app_version(), " | ", shiny::tags$a("License: AGPLv3", href = "https://github.com/agdamsbo/FreesearchR/blob/main/LICENSE.md", target = "_blank", rel = "noopener noreferrer"), " | ", shiny::tags$a("Source", href = "https://github.com/agdamsbo/FreesearchR/", target = "_blank", rel = "noopener noreferrer") ), ) ) diff --git a/man/data-plots.Rd b/man/data-plots.Rd index 171c45f9..6a42b997 100644 --- a/man/data-plots.Rd +++ b/man/data-plots.Rd @@ -32,7 +32,7 @@ plot_ridge(data, x, y, z = NULL, ...) sankey_ready(data, pri, sec, numbers = "count", ...) -plot_sankey(data, pri, sec, ter = NULL, color.group = "x", colors = NULL) +plot_sankey(data, pri, sec, ter = NULL, color.group = "pri", colors = NULL) plot_scatter(data, pri, sec, ter = NULL) @@ -103,6 +103,7 @@ mtcars |> plot_box(pri = "mpg", sec = "cyl", ter = "gear") mtcars |> default_parsing() |> plot_box(pri = "mpg", sec = "cyl", ter = "gear") +mtcars |> plot_box_single("mpg") mtcars |> plot_box_single("mpg","cyl") mtcars |> plot_hbars(pri = "carb", sec = "cyl") mtcars |> plot_hbars(pri = "carb", sec = NULL) @@ -121,8 +122,16 @@ data.frame( sankey_ready("first", "last") ds <- data.frame(g = sample(LETTERS[1:2], 100, TRUE), first = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE)), last = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE))) ds |> plot_sankey("first", "last") -ds |> plot_sankey("first", "last", color.group = "y") -ds |> plot_sankey("first", "last", z = "g", color.group = "y") +ds |> plot_sankey("first", "last", color.group = "sec") +ds |> plot_sankey("first", "last", ter = "g", color.group = "sec") +mtcars |> + default_parsing() |> + plot_sankey("cyl", "gear", "am", color.group = "pri") +## In this case, the last plot as the secondary variable in wrong order +## Dont know why... +mtcars |> + default_parsing() |> + plot_sankey("cyl", "gear", "vs", color.group = "pri") mtcars |> plot_scatter(pri = "mpg", sec = "wt") mtcars |> plot_violin(pri = "mpg", sec = "cyl", ter = "gear") } diff --git a/renv.lock b/renv.lock index 521be627..1a386741 100644 --- a/renv.lock +++ b/renv.lock @@ -146,27 +146,6 @@ "Maintainer": "Achim Zeileis ", "Repository": "CRAN" }, - "GPArotation": { - "Package": "GPArotation", - "Version": "2024.3-1", - "Source": "Repository", - "Title": "Gradient Projection Factor Rotation", - "Authors@R": "c( person(\"Coen\", \"Bernaards\", email = \"cab.gparotation@gmail.com\", role = c(\"aut\",\"cre\")), person(\"Paul\", \"Gilbert\", email = \"pgilbert.ttv9z@ncf.ca\", role = \"aut\"), person(\"Robert\", \"Jennrich\", role = \"aut\") )", - "Depends": [ - "R (>= 2.0.0)" - ], - "Description": "Gradient Projection Algorithms for Factor Rotation. For details see ?GPArotation. When using this package, please cite: Bernaards and Jennrich (2005) . \"Gradient Projection Algorithms and Software for Arbitrary Rotation Criteria in Factor Analysis\".", - "LazyData": "yes", - "Imports": [ - "stats" - ], - "License": "GPL (>= 2)", - "URL": "https://optimizer.r-forge.r-project.org/GPArotation_www/", - "NeedsCompilation": "no", - "Author": "Coen Bernaards [aut, cre], Paul Gilbert [aut], Robert Jennrich [aut]", - "Maintainer": "Coen Bernaards ", - "Repository": "CRAN" - }, "GenSA": { "Package": "GenSA", "Version": "1.1.14.1", @@ -1441,67 +1420,6 @@ "Maintainer": "Joseph Larmarange ", "Repository": "CRAN" }, - "broom.mixed": { - "Package": "broom.mixed", - "Version": "0.2.9.6", - "Source": "Repository", - "Type": "Package", - "Title": "Tidying Methods for Mixed Models", - "Authors@R": "c( person(\"Ben\", \"Bolker\", email = \"bolker@mcmaster.ca\", role = c(\"aut\", \"cre\"), comment=c(ORCID=\"0000-0002-2127-0443\")), person(\"David\", \"Robinson\", email = \"admiral.david@gmail.com\", role = \"aut\"), person(\"Dieter\", \"Menne\", role = \"ctb\"), person(\"Jonah\", \"Gabry\", role = \"ctb\"), person(\"Paul\", \"Buerkner\", role = \"ctb\"), person(\"Christopher\", \"Hua\", role = \"ctb\"), person(\"William\", \"Petry\", role = \"ctb\", comment=c(ORCID=\"0000-0002-5230-5987\")), person(\"Joshua\", \"Wiley\", role = \"ctb\", comment=c(ORCID=\"0000-0002-0271-6702\")), person(\"Patrick\", \"Kennedy\", role = \"ctb\"), person(\"Eduard\", \"Szöcs\", role = \"ctb\", comment=c(ORCID = \"0000-0001-5376-1194\", sponsor = \"BASF SE\")), person(\"Indrajeet\", \"Patil\", role=\"ctb\"), person(\"Vincent\", \"Arel-Bundock\", email = \"vincent.arel-bundock@umontreal.ca\", role = \"ctb\", comment = c(ORCID = \"0000-0003-2042-7063\")), person(\"Bill\", \"Denney\", role = \"ctb\"), person(\"Cory\", \"Brunson\", role = \"ctb\"), person(\"Joe\", \"Wasserman\", role = \"ctb\", comment = c(ORCID = \"0000-0002-9705-1853\")), person(\"Alexey\", \"Stukalov\", role = \"ctb\"), person(\"Matthieu\", \"Bruneaux\", role = \"ctb\") )", - "Maintainer": "Ben Bolker ", - "Description": "Convert fitted objects from various R mixed-model packages into tidy data frames along the lines of the 'broom' package. The package provides three S3 generics for each model: tidy(), which summarizes a model's statistical findings such as coefficients of a regression; augment(), which adds columns to the original data such as predictions, residuals and cluster assignments; and glance(), which provides a one-row summary of model-level statistics.", - "Imports": [ - "broom", - "coda", - "dplyr", - "forcats", - "methods", - "nlme", - "purrr", - "stringr", - "tibble", - "tidyr", - "furrr" - ], - "Suggests": [ - "brms", - "dotwhisker", - "knitr", - "testthat", - "gamlss", - "gamlss.data", - "ggplot2", - "GLMMadaptive", - "glmmADMB", - "glmmTMB", - "lmerTest", - "lme4", - "Matrix", - "MCMCglmm", - "mediation", - "mgcv", - "ordinal", - "pander", - "pbkrtest", - "posterior", - "rstan", - "rstanarm", - "rstantools", - "R2jags", - "TMB", - "rmarkdown" - ], - "URL": "https://github.com/bbolker/broom.mixed", - "BugReports": "https://github.com/bbolker/broom.mixed/issues", - "License": "GPL-3", - "Encoding": "UTF-8", - "Additional_repositories": "http://bbolker.github.io/drat", - "VignetteBuilder": "knitr", - "RoxygenNote": "7.3.2", - "NeedsCompilation": "no", - "Author": "Ben Bolker [aut, cre] (), David Robinson [aut], Dieter Menne [ctb], Jonah Gabry [ctb], Paul Buerkner [ctb], Christopher Hua [ctb], William Petry [ctb] (), Joshua Wiley [ctb] (), Patrick Kennedy [ctb], Eduard Szöcs [ctb] (, BASF SE), Indrajeet Patil [ctb], Vincent Arel-Bundock [ctb] (), Bill Denney [ctb], Cory Brunson [ctb], Joe Wasserman [ctb] (), Alexey Stukalov [ctb], Matthieu Bruneaux [ctb]", - "Repository": "CRAN" - }, "bsicons": { "Package": "bsicons", "Version": "0.1.2", @@ -1646,47 +1564,9 @@ "Maintainer": "Winston Chang ", "Repository": "CRAN" }, - "callr": { - "Package": "callr", - "Version": "3.7.6", - "Source": "Repository", - "Title": "Call R from R", - "Authors@R": "c( person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"), comment = c(ORCID = \"0000-0001-7098-9676\")), person(\"Winston\", \"Chang\", role = \"aut\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")), person(\"Ascent Digital Services\", role = c(\"cph\", \"fnd\")) )", - "Description": "It is sometimes useful to perform a computation in a separate R process, without affecting the current R process at all. This packages does exactly that.", - "License": "MIT + file LICENSE", - "URL": "https://callr.r-lib.org, https://github.com/r-lib/callr", - "BugReports": "https://github.com/r-lib/callr/issues", - "Depends": [ - "R (>= 3.4)" - ], - "Imports": [ - "processx (>= 3.6.1)", - "R6", - "utils" - ], - "Suggests": [ - "asciicast (>= 2.3.1)", - "cli (>= 1.1.0)", - "mockery", - "ps", - "rprojroot", - "spelling", - "testthat (>= 3.2.0)", - "withr (>= 2.3.0)" - ], - "Config/Needs/website": "r-lib/asciicast, glue, htmlwidgets, igraph, tibble, tidyverse/tidytemplate", - "Config/testthat/edition": "3", - "Encoding": "UTF-8", - "Language": "en-US", - "RoxygenNote": "7.3.1.9000", - "NeedsCompilation": "no", - "Author": "Gábor Csárdi [aut, cre, cph] (), Winston Chang [aut], Posit Software, PBC [cph, fnd], Ascent Digital Services [cph, fnd]", - "Maintainer": "Gábor Csárdi ", - "Repository": "CRAN" - }, "cards": { "Package": "cards", - "Version": "0.5.1", + "Version": "0.6.0", "Source": "Repository", "Title": "Analysis Results Data", "Authors@R": "c( person(\"Daniel D.\", \"Sjoberg\", , \"danield.sjoberg@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0862-2018\")), person(\"Becca\", \"Krouse\", , \"becca.z.krouse@gsk.com\", role = \"aut\"), person(\"Emily\", \"de la Rua\", , \"emily.de_la_rua@contractors.roche.com\", role = \"aut\"), person(\"F. Hoffmann-La Roche AG\", role = c(\"cph\", \"fnd\")), person(\"GlaxoSmithKline Research & Development Limited\", role = \"cph\") )", @@ -1725,19 +1605,19 @@ }, "cardx": { "Package": "cardx", - "Version": "0.2.3", + "Version": "0.2.4", "Source": "Repository", "Title": "Extra Analysis Results Data Utilities", "Authors@R": "c( person(\"Daniel D.\", \"Sjoberg\", , \"danield.sjoberg@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0862-2018\")), person(\"Abinaya\", \"Yogasekaram\", , \"abinaya.yogasekaram@contractors.roche.com\", role = \"aut\"), person(\"Emily\", \"de la Rua\", , \"emily.de_la_rua@contractors.roche.com\", role = \"aut\"), person(\"F. Hoffmann-La Roche AG\", role = c(\"cph\", \"fnd\")) )", "Description": "Create extra Analysis Results Data (ARD) summary objects. The package supplements the simple ARD functions from the 'cards' package, exporting functions to put statistical results in the ARD format. These objects are used and re-used to construct summary tables, visualizations, and written reports.", "License": "Apache License 2.0", - "URL": "https://insightsengineering.github.io/cardx/, https://github.com/insightsengineering/cardx/", + "URL": "https://github.com/insightsengineering/cardx, https://insightsengineering.github.io/cardx/", "BugReports": "https://github.com/insightsengineering/cardx/issues", "Depends": [ "R (>= 4.2)" ], "Imports": [ - "cards (>= 0.5.0)", + "cards (>= 0.5.1)", "cli (>= 3.6.1)", "dplyr (>= 1.1.2)", "glue (>= 1.6.2)", @@ -1747,7 +1627,7 @@ ], "Suggests": [ "aod (>= 1.3.3)", - "broom (>= 1.0.5)", + "broom (>= 1.0.8)", "broom.helpers (>= 1.17.0)", "broom.mixed (>= 0.2.9)", "car (>= 3.1-2)", @@ -1755,7 +1635,7 @@ "emmeans (>= 1.7.3)", "geepack (>= 1.3.2)", "ggsurvfit (>= 1.1.0)", - "lme4 (>= 1.1-35.3)", + "lme4 (>= 1.1-37)", "parameters (>= 0.20.2)", "smd (>= 0.6.6)", "survey (>= 4.2)", @@ -2030,26 +1910,6 @@ "Author": "Martin Maechler [aut, cre] (), Peter Rousseeuw [aut] (Fortran original, ), Anja Struyf [aut] (S original), Mia Hubert [aut] (S original, ), Kurt Hornik [trl, ctb] (port to R; maintenance(1999-2000), ), Matthias Studer [ctb], Pierre Roudier [ctb], Juan Gonzalez [ctb], Kamil Kozlowski [ctb], Erich Schubert [ctb] (fastpam options for pam(), ), Keefe Murphy [ctb] (volume.ellipsoid({d >= 3}))", "Repository": "CRAN" }, - "coda": { - "Package": "coda", - "Version": "0.19-4.1", - "Source": "Repository", - "Date": "2020-09-30", - "Title": "Output Analysis and Diagnostics for MCMC", - "Authors@R": "c(person(\"Martyn\", \"Plummer\", role=c(\"aut\",\"cre\",\"trl\"), email=\"martyn.plummer@gmail.com\"), person(\"Nicky\", \"Best\", role=\"aut\"), person(\"Kate\", \"Cowles\", role=\"aut\"), person(\"Karen\", \"Vines\", role=\"aut\"), person(\"Deepayan\", \"Sarkar\", role=\"aut\"), person(\"Douglas\", \"Bates\", role=\"aut\"), person(\"Russell\", \"Almond\", role=\"aut\"), person(\"Arni\", \"Magnusson\", role=\"aut\"))", - "Depends": [ - "R (>= 2.14.0)" - ], - "Imports": [ - "lattice" - ], - "Description": "Provides functions for summarizing and plotting the output from Markov Chain Monte Carlo (MCMC) simulations, as well as diagnostic tests of convergence to the equilibrium distribution of the Markov chain.", - "License": "GPL (>= 2)", - "NeedsCompilation": "no", - "Author": "Martyn Plummer [aut, cre, trl], Nicky Best [aut], Kate Cowles [aut], Karen Vines [aut], Deepayan Sarkar [aut], Douglas Bates [aut], Russell Almond [aut], Arni Magnusson [aut]", - "Maintainer": "Martyn Plummer ", - "Repository": "CRAN" - }, "codetools": { "Package": "codetools", "Version": "0.2-20", @@ -3354,7 +3214,7 @@ }, "fs": { "Package": "fs", - "Version": "1.6.5", + "Version": "1.6.6", "Source": "Repository", "Title": "Cross-Platform File System Operations Based on 'libuv'", "Authors@R": "c( person(\"Jim\", \"Hester\", role = \"aut\"), person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"libuv project contributors\", role = \"cph\", comment = \"libuv library\"), person(\"Joyent, Inc. and other Node contributors\", role = \"cph\", comment = \"libuv library\"), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", @@ -3394,82 +3254,6 @@ "Maintainer": "Gábor Csárdi ", "Repository": "CRAN" }, - "furrr": { - "Package": "furrr", - "Version": "0.3.1", - "Source": "Repository", - "Title": "Apply Mapping Functions in Parallel using Futures", - "Authors@R": "c( person(\"Davis\", \"Vaughan\", , \"davis@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"Matt\", \"Dancho\", , \"mdancho@business-science.io\", role = \"aut\"), person(\"RStudio\", role = c(\"cph\", \"fnd\")) )", - "Description": "Implementations of the family of map() functions from 'purrr' that can be resolved using any 'future'-supported backend, e.g. parallel on the local machine or distributed on a compute cluster.", - "License": "MIT + file LICENSE", - "URL": "https://github.com/DavisVaughan/furrr, https://furrr.futureverse.org/", - "BugReports": "https://github.com/DavisVaughan/furrr/issues", - "Depends": [ - "future (>= 1.25.0)", - "R (>= 3.4.0)" - ], - "Imports": [ - "globals (>= 0.14.0)", - "lifecycle (>= 1.0.1)", - "purrr (>= 0.3.4)", - "rlang (>= 1.0.2)", - "vctrs (>= 0.4.1)" - ], - "Suggests": [ - "carrier", - "covr", - "dplyr (>= 0.7.4)", - "knitr", - "listenv (>= 0.6.0)", - "magrittr", - "rmarkdown", - "testthat (>= 3.0.0)", - "tidyselect", - "withr" - ], - "Config/Needs/website": "progressr", - "Config/testthat/edition": "3", - "Encoding": "UTF-8", - "RoxygenNote": "7.2.1", - "NeedsCompilation": "no", - "Author": "Davis Vaughan [aut, cre], Matt Dancho [aut], RStudio [cph, fnd]", - "Maintainer": "Davis Vaughan ", - "Repository": "CRAN" - }, - "future": { - "Package": "future", - "Version": "1.34.0", - "Source": "Repository", - "Title": "Unified Parallel and Distributed Processing in R for Everyone", - "Imports": [ - "digest", - "globals (>= 0.16.1)", - "listenv (>= 0.8.0)", - "parallel", - "parallelly (>= 1.38.0)", - "utils" - ], - "Suggests": [ - "methods", - "RhpcBLASctl", - "R.rsp", - "markdown" - ], - "VignetteBuilder": "R.rsp", - "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role = c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\", comment = c(ORCID = \"0000-0002-7579-5165\")))", - "Description": "The purpose of this package is to provide a lightweight and unified Future API for sequential and parallel processing of R expression via futures. The simplest way to evaluate an expression in parallel is to use `x %<-% { expression }` with `plan(multisession)`. This package implements sequential, multicore, multisession, and cluster futures. With these, R expressions can be evaluated on the local machine, in parallel a set of local machines, or distributed on a mix of local and remote machines. Extensions to this package implement additional backends for processing futures via compute cluster schedulers, etc. Because of its unified API, there is no need to modify any code in order switch from sequential on the local machine to, say, distributed processing on a remote compute cluster. Another strength of this package is that global variables and functions are automatically identified and exported as needed, making it straightforward to tweak existing code to make use of futures.", - "License": "LGPL (>= 2.1)", - "LazyLoad": "TRUE", - "ByteCompile": "TRUE", - "URL": "https://future.futureverse.org, https://github.com/HenrikBengtsson/future", - "BugReports": "https://github.com/HenrikBengtsson/future/issues", - "Encoding": "UTF-8", - "RoxygenNote": "7.3.2", - "NeedsCompilation": "no", - "Author": "Henrik Bengtsson [aut, cre, cph] ()", - "Maintainer": "Henrik Bengtsson ", - "Repository": "CRAN" - }, "gap": { "Package": "gap", "Version": "1.6", @@ -3717,114 +3501,6 @@ "Maintainer": "Alboukadel Kassambara ", "Repository": "CRAN" }, - "ggeffects": { - "Package": "ggeffects", - "Version": "2.2.1", - "Source": "Repository", - "Type": "Package", - "Encoding": "UTF-8", - "Title": "Create Tidy Data Frames of Marginal Effects for 'ggplot' from Model Outputs", - "Authors@R": "c( person(\"Daniel\", \"Lüdecke\", role = c(\"aut\", \"cre\"), email = \"d.luedecke@uke.de\", comment = c(ORCID = \"0000-0002-8895-3206\")), person(\"Frederik\", \"Aust\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4900-788X\")), person(\"Sam\", \"Crawley\", role = \"ctb\", email = \"sam@crawley.nz\", comment = c(ORCID = \"0000-0002-7847-0411\")), person(c(\"Mattan\", \"S.\"), \"Ben-Shachar\", role = \"ctb\", email = \"matanshm@post.bgu.ac.il\", comment = c(ORCID = \"0000-0002-4287-4801\")), person(c(\"Sean\", \"C.\"), \"Anderson\", role = \"ctb\", email = \"sean@seananderson.ca\", comment = c(ORCID = \"0000-0001-9563-1937\")) )", - "Maintainer": "Daniel Lüdecke ", - "Description": "Compute marginal effects and adjusted predictions from statistical models and returns the result as tidy data frames. These data frames are ready to use with the 'ggplot2'-package. Effects and predictions can be calculated for many different models. Interaction terms, splines and polynomial terms are also supported. The main functions are ggpredict(), ggemmeans() and ggeffect(). There is a generic plot()-method to plot the results using 'ggplot2'.", - "Depends": [ - "R (>= 3.6)" - ], - "Imports": [ - "graphics", - "insight (>= 1.0.1)", - "datawizard (>= 1.0.0)", - "stats", - "utils" - ], - "Suggests": [ - "AER", - "afex", - "aod", - "bayestestR", - "betareg", - "brglm", - "brglm2", - "brms", - "broom", - "car", - "carData", - "clubSandwich", - "dfidx", - "effects (>= 4.2-2)", - "effectsize (>= 1.0.0)", - "emmeans (>= 1.8.9)", - "fixest", - "gam", - "gamlss", - "gamm4", - "gee", - "geepack", - "ggplot2", - "ggrepel", - "GLMMadaptive", - "glmmTMB (>= 1.1.7)", - "gridExtra", - "gt", - "haven", - "htmltools", - "httr2", - "jsonlite", - "knitr", - "lme4 (>= 1.1-35)", - "logistf", - "logitr", - "marginaleffects (>= 0.25.0)", - "modelbased (>= 0.9.0)", - "MASS", - "Matrix", - "mice", - "MCMCglmm", - "MuMIn", - "mgcv", - "mclogit", - "mlogit", - "nestedLogit (>= 0.3.0)", - "nlme", - "nnet", - "ordinal", - "parameters", - "parsnip", - "patchwork", - "pscl", - "plm", - "quantreg", - "rmarkdown", - "rms", - "robustbase", - "rstanarm", - "rstantools", - "sandwich", - "sdmTMB (>= 0.4.0)", - "see", - "sjlabelled (>= 1.1.2)", - "sjstats", - "speedglm", - "survey", - "survival", - "testthat", - "tibble", - "tinytable (>= 0.1.0)", - "vdiffr", - "withr", - "VGAM" - ], - "URL": "https://strengejacke.github.io/ggeffects/", - "BugReports": "https://github.com/strengejacke/ggeffects/issues/", - "RoxygenNote": "7.3.2", - "VignetteBuilder": "knitr", - "Config/testthat/edition": "3", - "License": "MIT + file LICENSE", - "LazyData": "true", - "NeedsCompilation": "no", - "Author": "Daniel Lüdecke [aut, cre] (), Frederik Aust [ctb] (), Sam Crawley [ctb] (), Mattan S. Ben-Shachar [ctb] (), Sean C. Anderson [ctb] ()", - "Repository": "CRAN" - }, "ggforce": { "Package": "ggforce", "Version": "0.4.2", @@ -3880,63 +3556,9 @@ "Author": "Thomas Lin Pedersen [cre, aut] (), RStudio [cph]", "Repository": "CRAN" }, - "ggiraph": { - "Package": "ggiraph", - "Version": "0.8.13", - "Source": "Repository", - "Type": "Package", - "Title": "Make 'ggplot2' Graphics Interactive", - "Authors@R": "c( person(\"David\", \"Gohel\", , \"david.gohel@ardata.fr\", role = c(\"aut\", \"cre\")), person(\"Panagiotis\", \"Skintzos\", , \"sigmapi@posteo.net\", role = \"aut\"), person(\"Mike\", \"Bostock\", role = \"cph\", comment = \"d3.js\"), person(\"Speros\", \"Kokenes\", role = \"cph\", comment = \"d3-lasso\"), person(\"Eric\", \"Shull\", role = \"cph\", comment = \"saveSvgAsPng js library\"), person(\"Lee\", \"Thomason\", role = \"cph\", comment = \"TinyXML2\"), person(\"Vladimir\", \"Agafonkin\", role = \"cph\", comment = \"Flatbush\"), person(\"Eric\", \"Book\", role = \"ctb\", comment = \"hline and vline geoms\") )", - "Description": "Create interactive 'ggplot2' graphics using 'htmlwidgets'.", - "License": "GPL-3", - "URL": "https://davidgohel.github.io/ggiraph/", - "BugReports": "https://github.com/davidgohel/ggiraph/issues", - "Imports": [ - "cli", - "ggplot2 (>= 3.5.1)", - "grid", - "htmltools", - "htmlwidgets (>= 1.5)", - "purrr", - "Rcpp (>= 1.0)", - "rlang", - "stats", - "systemfonts", - "uuid", - "vctrs" - ], - "Suggests": [ - "dplyr", - "gdtools (>= 0.3.0)", - "ggrepel (>= 0.9.1)", - "hexbin", - "knitr", - "maps", - "quantreg", - "rmarkdown", - "sf (>= 1.0)", - "shiny", - "tinytest", - "xml2 (>= 1.0)" - ], - "LinkingTo": [ - "Rcpp", - "systemfonts" - ], - "VignetteBuilder": "knitr", - "Copyright": "See file COPYRIGHTS.", - "Encoding": "UTF-8", - "RoxygenNote": "7.3.2", - "SystemRequirements": "libpng", - "Collate": "'RcppExports.R' 'ipar.R' 'utils_ggplot2_performance.R' 'utils_ggplot2.R' 'utils.R' 'annotate_interactive.R' 'annotation_raster_interactive.R' 'utils_css.R' 'fonts.R' 'girafe_options.R' 'default.R' 'dsvg.R' 'dsvg_view.R' 'element_interactive.R' 'facet_interactive.R' 'geom_abline_interactive.R' 'geom_path_interactive.R' 'geom_polygon_interactive.R' 'geom_rect_interactive.R' 'geom_bar_interactive.R' 'geom_bin_2d_interactive.R' 'geom_boxplot_interactive.R' 'geom_col_interactive.R' 'geom_contour_interactive.R' 'geom_count_interactive.R' 'geom_crossbar_interactive.R' 'geom_curve_interactive.R' 'geom_density_2d_interactive.R' 'geom_density_interactive.R' 'geom_dotplot_interactive.R' 'geom_errorbar_interactive.R' 'geom_errorbarh_interactive.R' 'geom_freqpoly_interactive.R' 'geom_hex_interactive.R' 'geom_histogram_interactive.R' 'geom_hline_interactive.R' 'geom_jitter_interactive.R' 'geom_label_interactive.R' 'geom_linerange_interactive.R' 'geom_map_interactive.R' 'geom_point_interactive.R' 'geom_pointrange_interactive.R' 'geom_quantile_interactive.R' 'geom_raster_interactive.R' 'geom_ribbon_interactive.R' 'geom_segment_interactive.R' 'geom_sf_interactive.R' 'geom_smooth_interactive.R' 'geom_spoke_interactive.R' 'geom_text_interactive.R' 'geom_text_repel_interactive.R' 'geom_tile_interactive.R' 'geom_violin_interactive.R' 'geom_vline_interactive.R' 'ggiraph.R' 'girafe.R' 'grob_interactive.R' 'guide_bins_interactive.R' 'guide_colourbar_interactive.R' 'guide_coloursteps_interactive.R' 'guide_interactive.R' 'guide_legend_interactive.R' 'interactive_circle_grob.R' 'interactive_curve_grob.R' 'interactive_path_grob.R' 'interactive_points_grob.R' 'interactive_polygon_grob.R' 'interactive_polyline_grob.R' 'interactive_raster_grob.R' 'interactive_rect_grob.R' 'interactive_roundrect_grob.R' 'interactive_segments_grob.R' 'interactive_text_grob.R' 'labeller_interactive.R' 'layer_interactive.R' 'scale_alpha_interactive.R' 'scale_brewer_interactive.R' 'scale_colour_interactive.R' 'scale_gradient_interactive.R' 'scale_interactive.R' 'scale_linetype_interactive.R' 'scale_manual_interactive.R' 'scale_shape_interactive.R' 'scale_size_interactive.R' 'scale_steps_interactive.R' 'scale_viridis_interactive.R' 'tracers.R'", - "NeedsCompilation": "yes", - "Author": "David Gohel [aut, cre], Panagiotis Skintzos [aut], Mike Bostock [cph] (d3.js), Speros Kokenes [cph] (d3-lasso), Eric Shull [cph] (saveSvgAsPng js library), Lee Thomason [cph] (TinyXML2), Vladimir Agafonkin [cph] (Flatbush), Eric Book [ctb] (hline and vline geoms)", - "Maintainer": "David Gohel ", - "Repository": "CRAN" - }, "ggplot2": { "Package": "ggplot2", - "Version": "3.5.1", + "Version": "3.5.2", "Source": "Repository", "Title": "Create Elegant Data Visualisations Using the Grammar of Graphics", "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4757-117X\")), person(\"Winston\", \"Chang\", role = \"aut\", comment = c(ORCID = \"0000-0002-1576-2126\")), person(\"Lionel\", \"Henry\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"Kohske\", \"Takahashi\", role = \"aut\"), person(\"Claus\", \"Wilke\", role = \"aut\", comment = c(ORCID = \"0000-0002-7470-9261\")), person(\"Kara\", \"Woo\", role = \"aut\", comment = c(ORCID = \"0000-0002-5125-4188\")), person(\"Hiroaki\", \"Yutani\", role = \"aut\", comment = c(ORCID = \"0000-0002-3385-7233\")), person(\"Dewey\", \"Dunnington\", role = \"aut\", comment = c(ORCID = \"0000-0002-9415-4582\")), person(\"Teun\", \"van den Brand\", role = \"aut\", comment = c(ORCID = \"0000-0002-9335-7468\")), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", @@ -3996,7 +3618,7 @@ "Config/testthat/edition": "3", "Encoding": "UTF-8", "LazyData": "true", - "RoxygenNote": "7.3.1", + "RoxygenNote": "7.3.2", "Collate": "'ggproto.R' 'ggplot-global.R' 'aaa-.R' 'aes-colour-fill-alpha.R' 'aes-evaluation.R' 'aes-group-order.R' 'aes-linetype-size-shape.R' 'aes-position.R' 'compat-plyr.R' 'utilities.R' 'aes.R' 'utilities-checks.R' 'legend-draw.R' 'geom-.R' 'annotation-custom.R' 'annotation-logticks.R' 'geom-polygon.R' 'geom-map.R' 'annotation-map.R' 'geom-raster.R' 'annotation-raster.R' 'annotation.R' 'autolayer.R' 'autoplot.R' 'axis-secondary.R' 'backports.R' 'bench.R' 'bin.R' 'coord-.R' 'coord-cartesian-.R' 'coord-fixed.R' 'coord-flip.R' 'coord-map.R' 'coord-munch.R' 'coord-polar.R' 'coord-quickmap.R' 'coord-radial.R' 'coord-sf.R' 'coord-transform.R' 'data.R' 'docs_layer.R' 'facet-.R' 'facet-grid-.R' 'facet-null.R' 'facet-wrap.R' 'fortify-lm.R' 'fortify-map.R' 'fortify-multcomp.R' 'fortify-spatial.R' 'fortify.R' 'stat-.R' 'geom-abline.R' 'geom-rect.R' 'geom-bar.R' 'geom-bin2d.R' 'geom-blank.R' 'geom-boxplot.R' 'geom-col.R' 'geom-path.R' 'geom-contour.R' 'geom-count.R' 'geom-crossbar.R' 'geom-segment.R' 'geom-curve.R' 'geom-defaults.R' 'geom-ribbon.R' 'geom-density.R' 'geom-density2d.R' 'geom-dotplot.R' 'geom-errorbar.R' 'geom-errorbarh.R' 'geom-freqpoly.R' 'geom-function.R' 'geom-hex.R' 'geom-histogram.R' 'geom-hline.R' 'geom-jitter.R' 'geom-label.R' 'geom-linerange.R' 'geom-point.R' 'geom-pointrange.R' 'geom-quantile.R' 'geom-rug.R' 'geom-sf.R' 'geom-smooth.R' 'geom-spoke.R' 'geom-text.R' 'geom-tile.R' 'geom-violin.R' 'geom-vline.R' 'ggplot2-package.R' 'grob-absolute.R' 'grob-dotstack.R' 'grob-null.R' 'grouping.R' 'theme-elements.R' 'guide-.R' 'guide-axis.R' 'guide-axis-logticks.R' 'guide-axis-stack.R' 'guide-axis-theta.R' 'guide-legend.R' 'guide-bins.R' 'guide-colorbar.R' 'guide-colorsteps.R' 'guide-custom.R' 'layer.R' 'guide-none.R' 'guide-old.R' 'guides-.R' 'guides-grid.R' 'hexbin.R' 'import-standalone-obj-type.R' 'import-standalone-types-check.R' 'labeller.R' 'labels.R' 'layer-sf.R' 'layout.R' 'limits.R' 'margins.R' 'performance.R' 'plot-build.R' 'plot-construction.R' 'plot-last.R' 'plot.R' 'position-.R' 'position-collide.R' 'position-dodge.R' 'position-dodge2.R' 'position-identity.R' 'position-jitter.R' 'position-jitterdodge.R' 'position-nudge.R' 'position-stack.R' 'quick-plot.R' 'reshape-add-margins.R' 'save.R' 'scale-.R' 'scale-alpha.R' 'scale-binned.R' 'scale-brewer.R' 'scale-colour.R' 'scale-continuous.R' 'scale-date.R' 'scale-discrete-.R' 'scale-expansion.R' 'scale-gradient.R' 'scale-grey.R' 'scale-hue.R' 'scale-identity.R' 'scale-linetype.R' 'scale-linewidth.R' 'scale-manual.R' 'scale-shape.R' 'scale-size.R' 'scale-steps.R' 'scale-type.R' 'scale-view.R' 'scale-viridis.R' 'scales-.R' 'stat-align.R' 'stat-bin.R' 'stat-bin2d.R' 'stat-bindot.R' 'stat-binhex.R' 'stat-boxplot.R' 'stat-contour.R' 'stat-count.R' 'stat-density-2d.R' 'stat-density.R' 'stat-ecdf.R' 'stat-ellipse.R' 'stat-function.R' 'stat-identity.R' 'stat-qq-line.R' 'stat-qq.R' 'stat-quantilemethods.R' 'stat-sf-coordinates.R' 'stat-sf.R' 'stat-smooth-methods.R' 'stat-smooth.R' 'stat-sum.R' 'stat-summary-2d.R' 'stat-summary-bin.R' 'stat-summary-hex.R' 'stat-summary.R' 'stat-unique.R' 'stat-ydensity.R' 'summarise-plot.R' 'summary.R' 'theme.R' 'theme-defaults.R' 'theme-current.R' 'utilities-break.R' 'utilities-grid.R' 'utilities-help.R' 'utilities-matrix.R' 'utilities-patterns.R' 'utilities-resolution.R' 'utilities-tidy-eval.R' 'zxx.R' 'zzz.R'", "NeedsCompilation": "no", "Author": "Hadley Wickham [aut] (), Winston Chang [aut] (), Lionel Henry [aut], Thomas Lin Pedersen [aut, cre] (), Kohske Takahashi [aut], Claus Wilke [aut] (), Kara Woo [aut] (), Hiroaki Yutani [aut] (), Dewey Dunnington [aut] (), Teun van den Brand [aut] (), Posit, PBC [cph, fnd]", @@ -4103,30 +3725,6 @@ "Maintainer": "Joseph Larmarange ", "Repository": "CRAN" }, - "globals": { - "Package": "globals", - "Version": "0.16.3", - "Source": "Repository", - "Depends": [ - "R (>= 3.1.2)" - ], - "Imports": [ - "codetools" - ], - "Title": "Identify Global Objects in R Expressions", - "Authors@R": "c( person(\"Henrik\", \"Bengtsson\", role=c(\"aut\", \"cre\", \"cph\"), email=\"henrikb@braju.com\"), person(\"Davis\",\"Vaughan\", role=\"ctb\", email=\"davis@rstudio.com\"))", - "Description": "Identifies global (\"unknown\" or \"free\") objects in R expressions by code inspection using various strategies (ordered, liberal, or conservative). The objective of this package is to make it as simple as possible to identify global objects for the purpose of exporting them in parallel, distributed compute environments.", - "License": "LGPL (>= 2.1)", - "LazyLoad": "TRUE", - "ByteCompile": "TRUE", - "URL": "https://globals.futureverse.org, https://github.com/HenrikBengtsson/globals", - "BugReports": "https://github.com/HenrikBengtsson/globals/issues", - "RoxygenNote": "7.3.1", - "NeedsCompilation": "no", - "Author": "Henrik Bengtsson [aut, cre, cph], Davis Vaughan [ctb]", - "Maintainer": "Henrik Bengtsson ", - "Repository": "CRAN" - }, "glue": { "Package": "glue", "Version": "1.8.0", @@ -4309,10 +3907,10 @@ }, "gtsummary": { "Package": "gtsummary", - "Version": "2.1.0", + "Version": "2.2.0", "Source": "Repository", "Title": "Presentation-Ready Data Summary and Analytic Result Tables", - "Authors@R": "c( person(\"Daniel D.\", \"Sjoberg\", , \"danield.sjoberg@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0862-2018\")), person(\"Joseph\", \"Larmarange\", role = \"aut\", comment = c(ORCID = \"0000-0001-7097-700X\")), person(\"Michael\", \"Curry\", role = \"aut\", comment = c(ORCID = \"0000-0002-0261-4044\")), person(\"Jessica\", \"Lavery\", role = \"aut\", comment = c(ORCID = \"0000-0002-2746-5647\")), person(\"Karissa\", \"Whiting\", role = \"aut\", comment = c(ORCID = \"0000-0002-4683-1868\")), person(\"Emily C.\", \"Zabor\", role = \"aut\", comment = c(ORCID = \"0000-0002-1402-4498\")), person(\"Xing\", \"Bai\", role = \"ctb\"), person(\"Esther\", \"Drill\", role = \"ctb\", comment = c(ORCID = \"0000-0002-3315-4538\")), person(\"Jessica\", \"Flynn\", role = \"ctb\", comment = c(ORCID = \"0000-0001-8310-6684\")), person(\"Margie\", \"Hannum\", role = \"ctb\", comment = c(ORCID = \"0000-0002-2953-0449\")), person(\"Stephanie\", \"Lobaugh\", role = \"ctb\"), person(\"Shannon\", \"Pileggi\", role = \"ctb\", comment = c(ORCID = \"0000-0002-7732-4164\")), person(\"Amy\", \"Tin\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8005-0694\")), person(\"Gustavo\", \"Zapata Wainberg\", role = \"ctb\", comment = c(ORCID = \"0000-0002-2524-3637\")) )", + "Authors@R": "c( person(\"Daniel D.\", \"Sjoberg\", , \"danield.sjoberg@gmail.com\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0862-2018\")), person(\"Joseph\", \"Larmarange\", role = \"aut\", comment = c(ORCID = \"0000-0001-7097-700X\")), person(\"Michael\", \"Curry\", role = \"aut\", comment = c(ORCID = \"0000-0002-0261-4044\")), person(\"Emily\", \"de la Rua\", , role = \"aut\", comment = c(ORCID = \"0009-0000-8738-5561\")), person(\"Jessica\", \"Lavery\", role = \"aut\", comment = c(ORCID = \"0000-0002-2746-5647\")), person(\"Karissa\", \"Whiting\", role = \"aut\", comment = c(ORCID = \"0000-0002-4683-1868\")), person(\"Emily C.\", \"Zabor\", role = \"aut\", comment = c(ORCID = \"0000-0002-1402-4498\")), person(\"Xing\", \"Bai\", role = \"ctb\"), person(\"Esther\", \"Drill\", role = \"ctb\", comment = c(ORCID = \"0000-0002-3315-4538\")), person(\"Jessica\", \"Flynn\", role = \"ctb\", comment = c(ORCID = \"0000-0001-8310-6684\")), person(\"Margie\", \"Hannum\", role = \"ctb\", comment = c(ORCID = \"0000-0002-2953-0449\")), person(\"Stephanie\", \"Lobaugh\", role = \"ctb\"), person(\"Shannon\", \"Pileggi\", role = \"ctb\", comment = c(ORCID = \"0000-0002-7732-4164\")), person(\"Amy\", \"Tin\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8005-0694\")), person(\"Gustavo\", \"Zapata Wainberg\", role = \"ctb\", comment = c(ORCID = \"0000-0002-2524-3637\")) )", "Description": "Creates presentation-ready tables summarizing data sets, regression models, and more. The code to create the tables is concise and highly customizable. Data frames can be summarized with any function, e.g. mean(), median(), even user-written functions. Regression models are summarized and include the reference rows for categorical variables. Common regression models, such as logistic regression and Cox proportional hazards regression, are automatically identified and the tables are pre-filled with appropriate column headers.", "License": "MIT + file LICENSE", "URL": "https://github.com/ddsjoberg/gtsummary, https://www.danieldsjoberg.com/gtsummary/", @@ -4321,7 +3919,7 @@ "R (>= 4.2)" ], "Imports": [ - "cards (>= 0.5.0)", + "cards (>= 0.6.0)", "cli (>= 3.6.3)", "dplyr (>= 1.1.3)", "glue (>= 1.8.0)", @@ -4337,7 +3935,7 @@ "broom.helpers (>= 1.17.0)", "broom.mixed (>= 0.2.9)", "car (>= 3.0-11)", - "cardx (>= 0.2.3)", + "cardx (>= 0.2.4)", "cmprsk", "effectsize (>= 0.6.0)", "emmeans (>= 1.7.3)", @@ -4374,26 +3972,10 @@ "LazyData": "true", "RoxygenNote": "7.3.2", "NeedsCompilation": "no", - "Author": "Daniel D. Sjoberg [aut, cre] (), Joseph Larmarange [aut] (), Michael Curry [aut] (), Jessica Lavery [aut] (), Karissa Whiting [aut] (), Emily C. Zabor [aut] (), Xing Bai [ctb], Esther Drill [ctb] (), Jessica Flynn [ctb] (), Margie Hannum [ctb] (), Stephanie Lobaugh [ctb], Shannon Pileggi [ctb] (), Amy Tin [ctb] (), Gustavo Zapata Wainberg [ctb] ()", + "Author": "Daniel D. Sjoberg [aut, cre] (), Joseph Larmarange [aut] (), Michael Curry [aut] (), Emily de la Rua [aut] (), Jessica Lavery [aut] (), Karissa Whiting [aut] (), Emily C. Zabor [aut] (), Xing Bai [ctb], Esther Drill [ctb] (), Jessica Flynn [ctb] (), Margie Hannum [ctb] (), Stephanie Lobaugh [ctb], Shannon Pileggi [ctb] (), Amy Tin [ctb] (), Gustavo Zapata Wainberg [ctb] ()", "Maintainer": "Daniel D. Sjoberg ", "Repository": "CRAN" }, - "gvlma": { - "Package": "gvlma", - "Version": "1.0.0.3", - "Source": "Repository", - "Type": "Package", - "Title": "Global Validation of Linear Models Assumptions", - "Author": "Edsel A. Pena and Elizabeth H. Slate ", - "Maintainer": "Elizabeth Slate ", - "Description": "Methods from the paper: Pena, EA and Slate, EH, \"Global Validation of Linear Model Assumptions,\" J. American Statistical Association, 101(473):341-354, 2006.", - "Depends": [ - "R (>= 2.1.1)" - ], - "License": "GPL", - "NeedsCompilation": "no", - "Repository": "CRAN" - }, "haven": { "Package": "haven", "Version": "2.5.4", @@ -4672,7 +4254,7 @@ }, "httpuv": { "Package": "httpuv", - "Version": "1.6.15", + "Version": "1.6.16", "Source": "Repository", "Type": "Package", "Title": "HTTP and WebSocket Server Library", @@ -4694,6 +4276,7 @@ "Suggests": [ "callr", "curl", + "jsonlite", "testthat", "websocket" ], @@ -4702,7 +4285,7 @@ "Rcpp" ], "Encoding": "UTF-8", - "RoxygenNote": "7.3.1", + "RoxygenNote": "7.3.2", "SystemRequirements": "GNU make, zlib", "Collate": "'RcppExports.R' 'httpuv.R' 'random_port.R' 'server.R' 'staticServer.R' 'static_paths.R' 'utils.R'", "NeedsCompilation": "yes", @@ -4752,12 +4335,12 @@ }, "insight": { "Package": "insight", - "Version": "1.1.0", + "Version": "1.2.0", "Source": "Repository", "Type": "Package", "Title": "Easy Access to Model Information for Various Model Objects", - "Authors@R": "c(person(given = \"Daniel\", family = \"Lüdecke\", role = c(\"aut\", \"cre\"), email = \"d.luedecke@uke.de\", comment = c(ORCID = \"0000-0002-8895-3206\")), person(given = \"Dominique\", family = \"Makowski\", role = c(\"aut\", \"ctb\"), email = \"dom.makowski@gmail.com\", comment = c(ORCID = \"0000-0001-5375-9967\")), person(given = \"Indrajeet\", family = \"Patil\", role = c(\"aut\", \"ctb\"), email = \"patilindrajeet.science@gmail.com\", comment = c(ORCID = \"0000-0003-1995-6531\")), person(given = \"Philip\", family = \"Waggoner\", role = c(\"aut\", \"ctb\"), email = \"philip.waggoner@gmail.com\", comment = c(ORCID = \"0000-0002-7825-7573\")), person(given = \"Mattan S.\", family = \"Ben-Shachar\", role = c(\"aut\", \"ctb\"), email = \"matanshm@post.bgu.ac.il\", comment = c(ORCID = \"0000-0002-4287-4801\")), person(given = \"Brenton M.\", family = \"Wiernik\", role = c(\"aut\", \"ctb\"), email = \"brenton@wiernik.org\", comment = c(ORCID = \"0000-0001-9560-6336\")), person(given = \"Vincent\", family = \"Arel-Bundock\", email = \"vincent.arel-bundock@umontreal.ca\", role = c(\"aut\", \"ctb\"), comment = c(ORCID = \"0000-0003-2042-7063\")), person(given = \"Etienne\", family = \"Bacher\", email = \"etienne.bacher@protonmail.com\", role = c(\"aut\", \"ctb\"), comment = c(ORCID = \"0000-0002-9271-5075\")), person(given = \"Alex\", family = \"Hayes\", role = c(\"rev\"), email = \"alexpghayes@gmail.com\", comment = c(ORCID = \"0000-0002-4985-5160\")), person(given = \"Grant\", family = \"McDermott\", role = c(\"ctb\"), email = \"grantmcd@uoregon.edu\", comment = c(ORCID = \"0000-0001-7883-8573\")), person(given = \"Rémi\", family = \"Thériault\", role = \"ctb\", email = \"remi.theriault@mail.mcgill.ca\", comment = c(ORCID = \"0000-0003-4315-6788\")), person(given = \"Alex\", family = \"Reinhart\", role = \"ctb\", email = \"areinhar@stat.cmu.edu\", comment = c(ORCID = \"0000-0002-6658-514X\")))", - "Maintainer": "Daniel Lüdecke ", + "Authors@R": "c(person(given = \"Daniel\", family = \"Lüdecke\", role = c(\"aut\", \"cre\"), email = \"officialeasystats@gmail.com\", comment = c(ORCID = \"0000-0002-8895-3206\")), person(given = \"Dominique\", family = \"Makowski\", role = c(\"aut\", \"ctb\"), email = \"dom.makowski@gmail.com\", comment = c(ORCID = \"0000-0001-5375-9967\")), person(given = \"Indrajeet\", family = \"Patil\", role = c(\"aut\", \"ctb\"), email = \"patilindrajeet.science@gmail.com\", comment = c(ORCID = \"0000-0003-1995-6531\")), person(given = \"Philip\", family = \"Waggoner\", role = c(\"aut\", \"ctb\"), email = \"philip.waggoner@gmail.com\", comment = c(ORCID = \"0000-0002-7825-7573\")), person(given = \"Mattan S.\", family = \"Ben-Shachar\", role = c(\"aut\", \"ctb\"), email = \"matanshm@post.bgu.ac.il\", comment = c(ORCID = \"0000-0002-4287-4801\")), person(given = \"Brenton M.\", family = \"Wiernik\", role = c(\"aut\", \"ctb\"), email = \"brenton@wiernik.org\", comment = c(ORCID = \"0000-0001-9560-6336\")), person(given = \"Vincent\", family = \"Arel-Bundock\", email = \"vincent.arel-bundock@umontreal.ca\", role = c(\"aut\", \"ctb\"), comment = c(ORCID = \"0000-0003-2042-7063\")), person(given = \"Etienne\", family = \"Bacher\", email = \"etienne.bacher@protonmail.com\", role = c(\"aut\", \"ctb\"), comment = c(ORCID = \"0000-0002-9271-5075\")), person(given = \"Alex\", family = \"Hayes\", role = c(\"rev\"), email = \"alexpghayes@gmail.com\", comment = c(ORCID = \"0000-0002-4985-5160\")), person(given = \"Grant\", family = \"McDermott\", role = c(\"ctb\"), email = \"grantmcd@uoregon.edu\", comment = c(ORCID = \"0000-0001-7883-8573\")), person(given = \"Rémi\", family = \"Thériault\", role = \"ctb\", email = \"remi.theriault@mail.mcgill.ca\", comment = c(ORCID = \"0000-0003-4315-6788\")), person(given = \"Alex\", family = \"Reinhart\", role = \"ctb\", email = \"areinhar@stat.cmu.edu\", comment = c(ORCID = \"0000-0002-6658-514X\")))", + "Maintainer": "Daniel Lüdecke ", "Description": "A tool to provide an easy, intuitive and consistent access to information contained in various R models, like model formulas, model terms, information about random effects, data that was used to fit the model or data from response variables. 'insight' mainly revolves around two types of functions: Functions that find (the names of) information, starting with 'find_', and functions that get the underlying data, starting with 'get_'. The package has a consistent syntax and works with many different model objects, where otherwise functions to access these information are missing.", "License": "GPL-3", "URL": "https://easystats.github.io/insight/", @@ -4815,7 +4398,6 @@ "gee", "geepack", "geoR", - "ggeffects (>= 2.2.0)", "GLMMadaptive", "glmmTMB (>= 1.1.10)", "glmtoolbox", @@ -4881,6 +4463,7 @@ "rstanarm (>= 2.21.1)", "rstantools (>= 2.1.0)", "rstudioapi", + "RWiener", "sandwich", "serp", "speedglm", @@ -4890,7 +4473,7 @@ "survival", "svylme", "testthat", - "tinytable (>= 0.1.0)", + "tinytable (>= 0.8.0)", "TMB", "truncreg", "tune", @@ -4970,52 +4553,6 @@ "Maintainer": "Folashade Daniel ", "Repository": "CRAN" }, - "janitor": { - "Package": "janitor", - "Version": "2.2.1", - "Source": "Repository", - "Title": "Simple Tools for Examining and Cleaning Dirty Data", - "Authors@R": "c(person(\"Sam\", \"Firke\", email = \"samuel.firke@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Bill\", \"Denney\", email = \"wdenney@humanpredictions.com\", role = \"ctb\"), person(\"Chris\", \"Haid\", email = \"chrishaid@gmail.com\", role = \"ctb\"), person(\"Ryan\", \"Knight\", email = \"ryangknight@gmail.com\", role = \"ctb\"), person(\"Malte\", \"Grosser\", email = \"malte.grosser@gmail.com\", role = \"ctb\"), person(\"Jonathan\", \"Zadra\", email = \"jonathan.zadra@sorensonimpact.com\", role = \"ctb\"))", - "Description": "The main janitor functions can: perfectly format data.frame column names; provide quick counts of variable combinations (i.e., frequency tables and crosstabs); and explore duplicate records. Other janitor functions nicely format the tabulation results. These tabulate-and-report functions approximate popular features of SPSS and Microsoft Excel. This package follows the principles of the \"tidyverse\" and works well with the pipe function %>%. janitor was built with beginning-to-intermediate R users in mind and is optimized for user-friendliness.", - "URL": "https://github.com/sfirke/janitor, https://sfirke.github.io/janitor/", - "BugReports": "https://github.com/sfirke/janitor/issues", - "Depends": [ - "R (>= 3.1.2)" - ], - "Imports": [ - "dplyr (>= 1.0.0)", - "hms", - "lifecycle", - "lubridate", - "magrittr", - "purrr", - "rlang", - "stringi", - "stringr", - "snakecase (>= 0.9.2)", - "tidyselect (>= 1.0.0)", - "tidyr (>= 0.7.0)" - ], - "License": "MIT + file LICENSE", - "RoxygenNote": "7.2.3", - "Suggests": [ - "dbplyr", - "knitr", - "rmarkdown", - "RSQLite", - "sf", - "testthat (>= 3.0.0)", - "tibble", - "tidygraph" - ], - "VignetteBuilder": "knitr", - "Encoding": "UTF-8", - "Config/testthat/edition": "3", - "NeedsCompilation": "no", - "Author": "Sam Firke [aut, cre], Bill Denney [ctb], Chris Haid [ctb], Ryan Knight [ctb], Malte Grosser [ctb], Jonathan Zadra [ctb]", - "Maintainer": "Sam Firke ", - "Repository": "CRAN" - }, "jquerylib": { "Package": "jquerylib", "Version": "0.1.4", @@ -5068,65 +4605,6 @@ "Author": "Jeroen Ooms [aut, cre] (), Duncan Temple Lang [ctb], Lloyd Hilaiel [cph] (author of bundled libyajl)", "Repository": "CRAN" }, - "jtools": { - "Package": "jtools", - "Version": "2.3.0", - "Source": "Repository", - "Type": "Package", - "Title": "Analysis and Presentation of Social Scientific Data", - "Authors@R": "person(c(\"Jacob\",\"A.\"), \"Long\", email = \"jacob.long@sc.edu\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-1582-6214\"))", - "Description": "This is a collection of tools for more efficiently understanding and sharing the results of (primarily) regression analyses. There are also a number of miscellaneous functions for statistical and programming purposes. Support for models produced by the survey and lme4 packages are points of emphasis.", - "URL": "https://jtools.jacob-long.com", - "BugReports": "https://github.com/jacob-long/jtools/issues", - "License": "GPL (>= 3)", - "Encoding": "UTF-8", - "LazyData": "true", - "Imports": [ - "cli", - "generics", - "broom", - "broom.mixed", - "ggplot2 (>= 3.4.0)", - "magrittr", - "pander", - "pkgconfig", - "rlang", - "sandwich", - "tibble" - ], - "Suggests": [ - "boot", - "huxtable", - "kableExtra", - "lme4", - "lmerTest", - "MASS", - "methods", - "pbkrtest", - "RColorBrewer", - "scales", - "survey", - "weights", - "knitr", - "rmarkdown", - "testthat", - "vdiffr" - ], - "Enhances": [ - "brms", - "quantreg", - "rstanarm" - ], - "RoxygenNote": "7.3.2", - "VignetteBuilder": "knitr", - "Depends": [ - "R (>= 3.6.0)" - ], - "NeedsCompilation": "no", - "Author": "Jacob A. Long [aut, cre] ()", - "Maintainer": "Jacob A. Long ", - "Repository": "CRAN" - }, "juicyjuice": { "Package": "juicyjuice", "Version": "0.1.0", @@ -5151,55 +4629,6 @@ "Maintainer": "Richard Iannone ", "Repository": "CRAN" }, - "kableExtra": { - "Package": "kableExtra", - "Version": "1.4.0", - "Source": "Repository", - "Type": "Package", - "Title": "Construct Complex Table with 'kable' and Pipe Syntax", - "Authors@R": "c( person('Hao', 'Zhu', email = 'haozhu233@gmail.com', role = c('aut', 'cre'), comment = c(ORCID = '0000-0002-3386-6076')), person('Thomas', 'Travison', role = 'ctb'), person('Timothy', 'Tsai', role = 'ctb'), person('Will', 'Beasley', email = 'wibeasley@hotmail.com', role = 'ctb'), person('Yihui', 'Xie', email = 'xie@yihui.name', role = 'ctb'), person('GuangChuang', 'Yu', email = 'guangchuangyu@gmail.com', role = 'ctb'), person('Stéphane', 'Laurent', role = 'ctb'), person('Rob', 'Shepherd', role = 'ctb'), person('Yoni', 'Sidi', role = 'ctb'), person('Brian', 'Salzer', role = 'ctb'), person('George', 'Gui', role = 'ctb'), person('Yeliang', 'Fan', role = 'ctb'), person('Duncan', 'Murdoch', role = 'ctb'), person('Vincent', 'Arel-Bundock', role = 'ctb'), person('Bill', 'Evans', role = 'ctb') )", - "Description": "Build complex HTML or 'LaTeX' tables using 'kable()' from 'knitr' and the piping syntax from 'magrittr'. Function 'kable()' is a light weight table generator coming from 'knitr'. This package simplifies the way to manipulate the HTML or 'LaTeX' codes generated by 'kable()' and allows users to construct complex tables and customize styles using a readable syntax.", - "License": "MIT + file LICENSE", - "URL": "http://haozhu233.github.io/kableExtra/, https://github.com/haozhu233/kableExtra", - "BugReports": "https://github.com/haozhu233/kableExtra/issues", - "Depends": [ - "R (>= 3.1.0)" - ], - "Imports": [ - "knitr (>= 1.33)", - "magrittr", - "stringr (>= 1.0)", - "xml2 (>= 1.1.1)", - "rmarkdown (>= 1.6.0)", - "scales", - "viridisLite", - "stats", - "grDevices", - "htmltools", - "rstudioapi", - "tools", - "digest", - "graphics", - "svglite" - ], - "Suggests": [ - "testthat", - "magick", - "tinytex", - "formattable", - "sparkline", - "webshot2" - ], - "Config/testthat/edition": "3", - "VignetteBuilder": "knitr", - "Encoding": "UTF-8", - "RoxygenNote": "7.2.3", - "Language": "en-US", - "NeedsCompilation": "no", - "Author": "Hao Zhu [aut, cre] (), Thomas Travison [ctb], Timothy Tsai [ctb], Will Beasley [ctb], Yihui Xie [ctb], GuangChuang Yu [ctb], Stéphane Laurent [ctb], Rob Shepherd [ctb], Yoni Sidi [ctb], Brian Salzer [ctb], George Gui [ctb], Yeliang Fan [ctb], Duncan Murdoch [ctb], Vincent Arel-Bundock [ctb], Bill Evans [ctb]", - "Maintainer": "Hao Zhu ", - "Repository": "CRAN" - }, "keyring": { "Package": "keyring", "Version": "1.3.2", @@ -5512,32 +4941,6 @@ "Maintainer": "Lionel Henry ", "Repository": "CRAN" }, - "listenv": { - "Package": "listenv", - "Version": "0.9.1", - "Source": "Repository", - "Depends": [ - "R (>= 3.1.2)" - ], - "Suggests": [ - "R.utils", - "R.rsp", - "markdown" - ], - "VignetteBuilder": "R.rsp", - "Title": "Environments Behaving (Almost) as Lists", - "Authors@R": "c(person(\"Henrik\", \"Bengtsson\", role=c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\"))", - "Description": "List environments are environments that have list-like properties. For instance, the elements of a list environment are ordered and can be accessed and iterated over using index subsetting, e.g. 'x <- listenv(a = 1, b = 2); for (i in seq_along(x)) x[[i]] <- x[[i]] ^ 2; y <- as.list(x)'.", - "License": "LGPL (>= 2.1)", - "LazyLoad": "TRUE", - "URL": "https://listenv.futureverse.org, https://github.com/HenrikBengtsson/listenv", - "BugReports": "https://github.com/HenrikBengtsson/listenv/issues", - "RoxygenNote": "7.3.1", - "NeedsCompilation": "no", - "Author": "Henrik Bengtsson [aut, cre, cph]", - "Maintainer": "Henrik Bengtsson ", - "Repository": "CRAN" - }, "litedown": { "Package": "litedown", "Version": "0.7", @@ -5920,24 +5323,6 @@ "Maintainer": "Chung-hong Chan ", "Repository": "CRAN" }, - "mnormt": { - "Package": "mnormt", - "Version": "2.1.1", - "Source": "Repository", - "Date": "2022-09-26", - "Title": "The Multivariate Normal and t Distributions, and Their Truncated Versions", - "Author": "Adelchi Azzalini [aut, cre], Alan Genz [aut] (most Fortran code), Alan Miller [ctb] (Fortran routine PHI), Michael J. Wichura [ctb] (Fortran routine PHINV), G. W. Hill [ctb] (Fortran routine STDINV), Yihong Ge [ctb] (Fortran routines BNVU and MVBVU).", - "Maintainer": "Adelchi Azzalini ", - "Depends": [ - "R (>= 2.2.0)" - ], - "Description": "Functions are provided for computing the density and the distribution function of d-dimensional normal and \"t\" random variables, possibly truncated (on one side or two sides), and for generating random vectors sampled from these distributions, except sampling from the truncated \"t\". Moments of arbitrary order of a multivariate truncated normal are computed, and converted to cumulants up to order 4. Probabilities are computed via non-Monte Carlo methods; different routines are used in the case d=1, d=2, d=3, d>3, if d denotes the dimensionality.", - "License": "GPL-2 | GPL-3", - "URL": "http://azzalini.stat.unipd.it/SW/Pkg-mnormt/", - "NeedsCompilation": "yes", - "Encoding": "UTF-8", - "Repository": "CRAN" - }, "modelbased": { "Package": "modelbased", "Version": "0.10.0", @@ -6289,98 +5674,6 @@ "Maintainer": "Jan Marvin Garbuszus ", "Repository": "CRAN" }, - "pander": { - "Package": "pander", - "Version": "0.6.6", - "Source": "Repository", - "Authors@R": "c( person(\"Gergely\", \"Daróczi\", , \"daroczig@rapporter.net\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-3149-8537\")), person(\"Roman\", \"Tsegelskyi\", , \"roman.tsegelskyi@gmail.com\", role = c(\"aut\")))", - "Title": "An R 'Pandoc' Writer", - "Type": "Package", - "Encoding": "UTF-8", - "Description": "Contains some functions catching all messages, 'stdout' and other useful information while evaluating R code and other helpers to return user specified text elements (like: header, paragraph, table, image, lists etc.) in 'pandoc' markdown or several type of R objects similarly automatically transformed to markdown format. Also capable of exporting/converting (the resulting) complex 'pandoc' documents to e.g. HTML, 'PDF', 'docx' or 'odt'. This latter reporting feature is supported in brew syntax or with a custom reference class with a smarty caching 'backend'.", - "Date": "2025-03-01", - "URL": "https://rapporter.github.io/pander/", - "BugReports": "https://github.com/rapporter/pander/issues", - "License": "AGPL-3 | file LICENSE", - "Depends": [ - "R (>= 2.15.0)" - ], - "Imports": [ - "grDevices", - "graphics", - "methods", - "utils", - "stats", - "digest", - "tools", - "Rcpp" - ], - "Suggests": [ - "grid", - "lattice", - "ggplot2 (>= 0.9.2)", - "sylly", - "sylly.en", - "logger", - "survival", - "microbenchmark", - "zoo", - "nlme", - "descr", - "MASS", - "knitr", - "rmarkdown", - "tables", - "reshape", - "memisc", - "Epi", - "randomForest", - "tseries", - "gtable", - "rms", - "forecast", - "data.table" - ], - "SystemRequirements": "pandoc (https://johnmacfarlane.net/pandoc) for exporting markdown files to other formats.", - "LinkingTo": [ - "Rcpp" - ], - "VignetteBuilder": "knitr", - "RoxygenNote": "7.3.2", - "NeedsCompilation": "yes", - "Author": "Gergely Daróczi [aut, cre] (), Roman Tsegelskyi [aut]", - "Maintainer": "Gergely Daróczi ", - "Repository": "CRAN" - }, - "parallelly": { - "Package": "parallelly", - "Version": "1.43.0", - "Source": "Repository", - "Title": "Enhancing the 'parallel' Package", - "Imports": [ - "parallel", - "tools", - "utils" - ], - "Suggests": [ - "commonmark", - "base64enc" - ], - "VignetteBuilder": "parallelly", - "Authors@R": "c( person(\"Henrik\", \"Bengtsson\", role = c(\"aut\", \"cre\", \"cph\"), email = \"henrikb@braju.com\", comment = c(ORCID = \"0000-0002-7579-5165\")), person(\"Mike\", \"Cheng\", role = c(\"ctb\"), email = \"mikefc@coolbutuseless.com\") )", - "Description": "Utility functions that enhance the 'parallel' package and support the built-in parallel backends of the 'future' package. For example, availableCores() gives the number of CPU cores available to your R process as given by the operating system, 'cgroups' and Linux containers, R options, and environment variables, including those set by job schedulers on high-performance compute clusters. If none is set, it will fall back to parallel::detectCores(). Another example is makeClusterPSOCK(), which is backward compatible with parallel::makePSOCKcluster() while doing a better job in setting up remote cluster workers without the need for configuring the firewall to do port-forwarding to your local computer.", - "License": "LGPL (>= 2.1)", - "LazyLoad": "TRUE", - "ByteCompile": "TRUE", - "URL": "https://parallelly.futureverse.org, https://github.com/futureverse/parallelly", - "BugReports": "https://github.com/futureverse/parallelly/issues", - "Encoding": "UTF-8", - "RoxygenNote": "7.3.2", - "NeedsCompilation": "yes", - "Author": "Henrik Bengtsson [aut, cre, cph] (), Mike Cheng [ctb]", - "Maintainer": "Henrik Bengtsson ", - "Repository": "CRAN" - }, "parameters": { "Package": "parameters", "Version": "0.24.2", @@ -7194,7 +6487,7 @@ }, "ps": { "Package": "ps", - "Version": "1.9.0", + "Version": "1.9.1", "Source": "Repository", "Title": "List, Query, Manipulate System Processes", "Authors@R": "c( person(\"Jay\", \"Loden\", role = \"aut\"), person(\"Dave\", \"Daeschler\", role = \"aut\"), person(\"Giampaolo\", \"Rodola'\", role = \"aut\"), person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\")) )", @@ -7231,44 +6524,6 @@ "Maintainer": "Gábor Csárdi ", "Repository": "CRAN" }, - "psych": { - "Package": "psych", - "Version": "2.5.3", - "Source": "Repository", - "Date": "2025-03-18", - "Title": "Procedures for Psychological, Psychometric, and Personality Research", - "Authors@R": "person(\"William\", \"Revelle\", role =c(\"aut\",\"cre\"), email=\"revelle@northwestern.edu\", comment=c(ORCID = \"0000-0003-4880-9610\") )", - "Description": "A general purpose toolbox developed originally for personality, psychometric theory and experimental psychology. Functions are primarily for multivariate analysis and scale construction using factor analysis, principal component analysis, cluster analysis and reliability analysis, although others provide basic descriptive statistics. Item Response Theory is done using factor analysis of tetrachoric and polychoric correlations. Functions for analyzing data at multiple levels include within and between group statistics, including correlations and factor analysis. Validation and cross validation of scales developed using basic machine learning algorithms are provided, as are functions for simulating and testing particular item and test structures. Several functions serve as a useful front end for structural equation modeling. Graphical displays of path diagrams, including mediation models, factor analysis and structural equation models are created using basic graphics. Some of the functions are written to support a book on psychometric theory as well as publications in personality research. For more information, see the web page.", - "License": "GPL (>= 2)", - "Imports": [ - "mnormt", - "parallel", - "stats", - "graphics", - "grDevices", - "methods", - "lattice", - "nlme", - "GPArotation" - ], - "Suggests": [ - "psychTools", - "lavaan", - "lme4", - "Rcsdp", - "graph", - "knitr", - "Rgraphviz" - ], - "LazyData": "yes", - "ByteCompile": "true", - "VignetteBuilder": "knitr", - "URL": "https://personality-project.org/r/psych/ https://personality-project.org/r/psych-manual.pdf", - "NeedsCompilation": "no", - "Author": "William Revelle [aut, cre] ()", - "Maintainer": "William Revelle ", - "Repository": "CRAN" - }, "purrr": { "Package": "purrr", "Version": "1.0.4", @@ -7318,18 +6573,18 @@ }, "qgam": { "Package": "qgam", - "Version": "1.3.4", + "Version": "2.0.0", "Source": "Repository", "Type": "Package", "Title": "Smooth Additive Quantile Regression Models", - "Date": "2021-11-21", - "Authors@R": "c(person(\"Matteo\", \"Fasiolo\", email = \"matteo.fasiolo@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Simon\", \"N. Wood\", role = c(\"ctb\")), person(\"Margaux\", \"Zaffran\", role = c(\"ctb\")), person(\"Yannig\", \"Goude\", role = c(\"ctb\")), person(\"Raphael\", \"Nedellec\", role = c(\"ctb\")))", + "Date": "2025-04-10", + "Authors@R": "c(person(\"Matteo\", \"Fasiolo\", email = \"matteo.fasiolo@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Ben\", \"Griffiths\", role = c(\"aut\")), person(\"Simon\", \"N. Wood\", role = c(\"ctb\")), person(\"Margaux\", \"Zaffran\", role = c(\"ctb\")), person(\"Yannig\", \"Goude\", role = c(\"ctb\")), person(\"Raphael\", \"Nedellec\", role = c(\"ctb\")))", "Maintainer": "Matteo Fasiolo ", "Description": "Smooth additive quantile regression models, fitted using the methods of Fasiolo et al. (2020) . See Fasiolo at al. (2021) for an introduction to the package. Differently from 'quantreg', the smoothing parameters are estimated automatically by marginal loss minimization, while the regression coefficients are estimated using either PIRLS or Newton algorithm. The learning rate is determined so that the Bayesian credible intervals of the estimated effects have approximately the correct coverage. The main function is qgam() which is similar to gam() in 'mgcv', but fits non-parametric quantile regression models.", "License": "GPL (>= 2)", "Depends": [ - "R (>= 3.5.0)", - "mgcv (>= 1.8-28)" + "R (>= 4.0)", + "mgcv (>= 1.9)" ], "Imports": [ "shiny", @@ -7346,9 +6601,10 @@ "testthat" ], "VignetteBuilder": "knitr", - "RoxygenNote": "7.1.1", + "RoxygenNote": "7.3.2", + "Encoding": "UTF-8", "NeedsCompilation": "yes", - "Author": "Matteo Fasiolo [aut, cre], Simon N. Wood [ctb], Margaux Zaffran [ctb], Yannig Goude [ctb], Raphael Nedellec [ctb]", + "Author": "Matteo Fasiolo [aut, cre], Ben Griffiths [aut], Simon N. Wood [ctb], Margaux Zaffran [ctb], Yannig Goude [ctb], Raphael Nedellec [ctb]", "Repository": "CRAN" }, "qqconf": { @@ -7473,7 +6729,7 @@ }, "ragg": { "Package": "ragg", - "Version": "1.3.3", + "Version": "1.4.0", "Source": "Repository", "Type": "Package", "Title": "Graphic Devices Based on AGG", @@ -7499,9 +6755,10 @@ ], "Config/Needs/website": "ggplot2, devoid, magick, bench, tidyr, ggridges, hexbin, sessioninfo, pkgdown, tidyverse/tidytemplate", "Encoding": "UTF-8", - "RoxygenNote": "7.3.1", + "RoxygenNote": "7.3.2", "SystemRequirements": "freetype2, libpng, libtiff, libjpeg", "Config/testthat/edition": "3", + "Config/build/compilation-database": "true", "NeedsCompilation": "yes", "Author": "Thomas Lin Pedersen [cre, aut] (), Maxim Shemanarev [aut, cph] (Author of AGG), Tony Juricic [ctb, cph] (Contributor to AGG), Milan Marusinec [ctb, cph] (Contributor to AGG), Spencer Garrett [ctb] (Contributor to AGG), Posit, PBC [cph, fnd]", "Repository": "CRAN" @@ -8119,11 +7376,11 @@ }, "rlang": { "Package": "rlang", - "Version": "1.1.5", + "Version": "1.1.6", "Source": "Repository", "Title": "Functions for Base Types and Core R and 'Tidyverse' Features", "Description": "A toolbox for working with base types, core R features like the condition system, and core 'Tidyverse' features like tidy evaluation.", - "Authors@R": "c( person(\"Lionel\", \"Henry\", ,\"lionel@posit.co\", c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", ,\"hadley@posit.co\", \"aut\"), person(given = \"mikefc\", email = \"mikefc@coolbutuseless.com\", role = \"cph\", comment = \"Hash implementation based on Mike's xxhashlite\"), person(given = \"Yann\", family = \"Collet\", role = \"cph\", comment = \"Author of the embedded xxHash library\"), person(given = \"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", + "Authors@R": "c( person(\"Lionel\", \"Henry\", ,\"lionel@posit.co\", c(\"aut\", \"cre\")), person(\"Hadley\", \"Wickham\", ,\"hadley@posit.co\", \"aut\"), person(given = \"mikefc\", email = \"mikefc@coolbutuseless.com\", role = \"cph\", comment = \"Hash implementation based on Mike's xxhashlite\"), person(given = \"Yann\", family = \"Collet\", role = \"cph\", comment = \"Author of the embedded xxHash library\"), person(given = \"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", "License": "MIT + file LICENSE", "ByteCompile": "true", "Biarch": "true", @@ -8137,15 +7394,17 @@ "cli (>= 3.1.0)", "covr", "crayon", + "desc", "fs", "glue", "knitr", "magrittr", "methods", "pillar", + "pkgload", "rmarkdown", "stats", - "testthat (>= 3.0.0)", + "testthat (>= 3.2.0)", "tibble", "usethis", "vctrs (>= 0.2.3)", @@ -8158,6 +7417,7 @@ "RoxygenNote": "7.3.2", "URL": "https://rlang.r-lib.org, https://github.com/r-lib/rlang", "BugReports": "https://github.com/r-lib/rlang/issues", + "Config/build/compilation-database": "true", "Config/testthat/edition": "3", "Config/Needs/website": "dplyr, tidyverse/tidytemplate", "NeedsCompilation": "yes", @@ -8364,51 +7624,9 @@ "Author": "Kevin Ushey [aut, cre], JJ Allaire [aut], Hadley Wickham [aut], Gary Ritchie [aut], RStudio [cph]", "Repository": "CRAN" }, - "sandwich": { - "Package": "sandwich", - "Version": "3.1-1", - "Source": "Repository", - "Date": "2024-09-16", - "Title": "Robust Covariance Matrix Estimators", - "Authors@R": "c(person(given = \"Achim\", family = \"Zeileis\", role = c(\"aut\", \"cre\"), email = \"Achim.Zeileis@R-project.org\", comment = c(ORCID = \"0000-0003-0918-3766\")), person(given = \"Thomas\", family = \"Lumley\", role = \"aut\", email = \"t.lumley@auckland.ac.nz\", comment = c(ORCID = \"0000-0003-4255-5437\")), person(given = \"Nathaniel\", family = \"Graham\", role = \"ctb\", email = \"npgraham1@gmail.com\", comment = c(ORCID = \"0009-0002-1215-5256\")), person(given = \"Susanne\", family = \"Koell\", role = \"ctb\"))", - "Description": "Object-oriented software for model-robust covariance matrix estimators. Starting out from the basic robust Eicker-Huber-White sandwich covariance methods include: heteroscedasticity-consistent (HC) covariances for cross-section data; heteroscedasticity- and autocorrelation-consistent (HAC) covariances for time series data (such as Andrews' kernel HAC, Newey-West, and WEAVE estimators); clustered covariances (one-way and multi-way); panel and panel-corrected covariances; outer-product-of-gradients covariances; and (clustered) bootstrap covariances. All methods are applicable to (generalized) linear model objects fitted by lm() and glm() but can also be adapted to other classes through S3 methods. Details can be found in Zeileis et al. (2020) , Zeileis (2004) and Zeileis (2006) .", - "Depends": [ - "R (>= 3.0.0)" - ], - "Imports": [ - "stats", - "utils", - "zoo" - ], - "Suggests": [ - "AER", - "car", - "geepack", - "lattice", - "lme4", - "lmtest", - "MASS", - "multiwayvcov", - "parallel", - "pcse", - "plm", - "pscl", - "scatterplot3d", - "stats4", - "strucchange", - "survival" - ], - "License": "GPL-2 | GPL-3", - "URL": "https://sandwich.R-Forge.R-project.org/", - "BugReports": "https://sandwich.R-Forge.R-project.org/contact.html", - "NeedsCompilation": "no", - "Author": "Achim Zeileis [aut, cre] (), Thomas Lumley [aut] (), Nathaniel Graham [ctb] (), Susanne Koell [ctb]", - "Maintainer": "Achim Zeileis ", - "Repository": "CRAN" - }, "sass": { "Package": "sass", - "Version": "0.4.9", + "Version": "0.4.10", "Source": "Repository", "Type": "Package", "Title": "Syntactically Awesome Style Sheets ('Sass')", @@ -8418,7 +7636,7 @@ "URL": "https://rstudio.github.io/sass/, https://github.com/rstudio/sass", "BugReports": "https://github.com/rstudio/sass/issues", "Encoding": "UTF-8", - "RoxygenNote": "7.3.1", + "RoxygenNote": "7.3.2", "SystemRequirements": "GNU make", "Imports": [ "fs (>= 1.2.4)", @@ -8736,246 +7954,6 @@ "Maintainer": "Victor Perrier ", "Repository": "CRAN" }, - "sjPlot": { - "Package": "sjPlot", - "Version": "2.8.17", - "Source": "Repository", - "Type": "Package", - "Encoding": "UTF-8", - "Title": "Data Visualization for Statistics in Social Science", - "Authors@R": "c( person(\"Daniel\", \"Lüdecke\", email = \"d.luedecke@uke.de\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0002-8895-3206\")), person(\"Alexander\", \"Bartel\", role = \"ctb\", comment = c(ORCID = \"0000-0002-1280-6138\")), person(\"Carsten\", \"Schwemmer\", email = \"carsten.schwemmer@uni-bamberg.de\", role = \"ctb\"), person(given = \"Chuck\", family = \"Powell\", role = \"ctb\", email = \"ibecav@gmail.com\", comment = c(ORCID = \"0000-0002-3606-2188\")), person(given = \"Amir\", family = \"Djalovski\", role = \"ctb\", email = \"Amir.DJV@gmail.com\"), person(given = \"Johannes\", family = \"Titz\", role = \"ctb\", email = \"johannes@titz.science\", comment = c(ORCID = \"0000-0002-1102-5719\")))", - "Maintainer": "Daniel Lüdecke ", - "Description": "Collection of plotting and table output functions for data visualization. Results of various statistical analyses (that are commonly used in social sciences) can be visualized using this package, including simple and cross tabulated frequencies, histograms, box plots, (generalized) linear models, mixed effects models, principal component analysis and correlation matrices, cluster analyses, scatter plots, stacked scales, effects plots of regression models (including interaction terms) and much more. This package supports labelled data.", - "License": "GPL-3", - "Depends": [ - "R (>= 3.6)" - ], - "Imports": [ - "graphics", - "grDevices", - "stats", - "utils", - "bayestestR", - "datawizard", - "dplyr", - "ggeffects", - "ggplot2 (>= 3.2.0)", - "knitr", - "insight", - "MASS", - "parameters", - "performance", - "purrr", - "rlang", - "scales", - "sjlabelled (>= 1.1.2)", - "sjmisc (>= 2.8.2)", - "sjstats (>= 0.17.8)", - "tidyr (>= 1.0.0)" - ], - "Suggests": [ - "brms", - "car", - "clubSandwich", - "cluster", - "cowplot", - "effects", - "haven", - "GPArotation", - "ggrepel", - "glmmTMB", - "gridExtra", - "ggridges", - "httr", - "lme4", - "nFactors", - "pscl", - "psych", - "rmarkdown", - "rstanarm", - "sandwich", - "splines", - "survey", - "TMB", - "testthat" - ], - "URL": "https://strengejacke.github.io/sjPlot/", - "BugReports": "https://github.com/strengejacke/sjPlot/issues", - "RoxygenNote": "7.3.2", - "VignetteBuilder": "knitr", - "NeedsCompilation": "no", - "Author": "Daniel Lüdecke [aut, cre] (), Alexander Bartel [ctb] (), Carsten Schwemmer [ctb], Chuck Powell [ctb] (), Amir Djalovski [ctb], Johannes Titz [ctb] ()", - "Repository": "CRAN" - }, - "sjlabelled": { - "Package": "sjlabelled", - "Version": "1.2.0", - "Source": "Repository", - "Type": "Package", - "Encoding": "UTF-8", - "Title": "Labelled Data Utility Functions", - "Authors@R": "c( person(\"Daniel\", \"Lüdecke\", role = c(\"aut\", \"cre\"), email = \"d.luedecke@uke.de\", comment = c(ORCID = \"0000-0002-8895-3206\")), person(\"avid\", \"Ranzolin\", role = \"ctb\", email = \"daranzolin@gmail.com\"), person(\"Jonathan\", \"De Troye\", role = \"ctb\", email = \"detroyejr@outlook.com\") )", - "Maintainer": "Daniel Lüdecke ", - "Description": "Collection of functions dealing with labelled data, like reading and writing data between R and other statistical software packages like 'SPSS', 'SAS' or 'Stata', and working with labelled data. This includes easy ways to get, set or change value and variable label attributes, to convert labelled vectors into factors or numeric (and vice versa), or to deal with multiple declared missing values.", - "License": "GPL-3", - "Depends": [ - "R (>= 3.4)" - ], - "Imports": [ - "insight", - "datawizard", - "stats", - "tools", - "utils" - ], - "Suggests": [ - "dplyr", - "haven (>= 1.1.2)", - "magrittr", - "sjmisc", - "sjPlot", - "knitr", - "rlang", - "rmarkdown", - "snakecase", - "testthat" - ], - "URL": "https://strengejacke.github.io/sjlabelled/", - "BugReports": "https://github.com/strengejacke/sjlabelled/issues", - "RoxygenNote": "7.1.2", - "VignetteBuilder": "knitr", - "NeedsCompilation": "no", - "Author": "Daniel Lüdecke [aut, cre] (), avid Ranzolin [ctb], Jonathan De Troye [ctb]", - "Repository": "CRAN" - }, - "sjmisc": { - "Package": "sjmisc", - "Version": "2.8.10", - "Source": "Repository", - "Type": "Package", - "Encoding": "UTF-8", - "Title": "Data and Variable Transformation Functions", - "Authors@R": "c(person(\"Daniel\", \"Lüdecke\", role = c(\"aut\", \"cre\"), email = \"d.luedecke@uke.de\", comment = c(ORCID = \"0000-0002-8895-3206\")), person(\"Iago\", \"Giné-Vázquez\", role = c(\"ctb\"), email = \"i.gine@pssjd.org\"), person(\"Alexander\", \"Bartel\", role = \"ctb\", email = \"alexander.bartel@fu-berlin.de\", comment = c(ORCID = \"0000-0002-1280-6138\")))", - "Maintainer": "Daniel Lüdecke ", - "Description": "Collection of miscellaneous utility functions, supporting data transformation tasks like recoding, dichotomizing or grouping variables, setting and replacing missing values. The data transformation functions also support labelled data, and all integrate seamlessly into a 'tidyverse'-workflow.", - "License": "GPL-3", - "Depends": [ - "R (>= 3.4)" - ], - "Imports": [ - "dplyr", - "insight", - "datawizard", - "magrittr", - "methods", - "purrr", - "rlang", - "sjlabelled (>= 1.1.1)", - "stats", - "tidyselect", - "utils" - ], - "Suggests": [ - "ggplot2", - "graphics", - "haven (>= 2.0.0)", - "mice", - "nnet", - "sjPlot", - "sjstats", - "knitr", - "rmarkdown", - "stringdist", - "testthat", - "tidyr" - ], - "URL": "https://strengejacke.github.io/sjmisc/", - "BugReports": "https://github.com/strengejacke/sjmisc/issues", - "RoxygenNote": "7.3.1", - "VignetteBuilder": "knitr", - "NeedsCompilation": "no", - "Author": "Daniel Lüdecke [aut, cre] (), Iago Giné-Vázquez [ctb], Alexander Bartel [ctb] ()", - "Repository": "CRAN" - }, - "sjstats": { - "Package": "sjstats", - "Version": "0.19.0", - "Source": "Repository", - "Type": "Package", - "Encoding": "UTF-8", - "Title": "Collection of Convenient Functions for Common Statistical Computations", - "Authors@R": "person(\"Daniel\", \"Lüdecke\", role = c(\"aut\", \"cre\"), email = \"d.luedecke@uke.de\", comment = c(ORCID = \"0000-0002-8895-3206\"))", - "Maintainer": "Daniel Lüdecke ", - "Description": "Collection of convenient functions for common statistical computations, which are not directly provided by R's base or stats packages. This package aims at providing, first, shortcuts for statistical measures, which otherwise could only be calculated with additional effort (like Cramer's V, Phi, or effect size statistics like Eta or Omega squared), or for which currently no functions available. Second, another focus lies on weighted variants of common statistical measures and tests like weighted standard error, mean, t-test, correlation, and more.", - "License": "GPL-3", - "Depends": [ - "R (>= 3.4)", - "utils" - ], - "Imports": [ - "datawizard", - "effectsize (>= 0.8.8)", - "insight", - "parameters", - "performance", - "stats" - ], - "Suggests": [ - "brms", - "car", - "coin", - "ggplot2", - "lme4", - "MASS", - "pscl", - "pwr", - "survey", - "testthat" - ], - "URL": "https://strengejacke.github.io/sjstats/", - "BugReports": "https://github.com/strengejacke/sjstats/issues", - "RoxygenNote": "7.3.1", - "Config/testthat/edition": "3", - "Config/testthat/parallel": "true", - "NeedsCompilation": "no", - "Author": "Daniel Lüdecke [aut, cre] ()", - "Repository": "CRAN" - }, - "snakecase": { - "Package": "snakecase", - "Version": "0.11.1", - "Source": "Repository", - "Date": "2023-08-27", - "Title": "Convert Strings into any Case", - "Description": "A consistent, flexible and easy to use tool to parse and convert strings into cases like snake or camel among others.", - "Authors@R": "c( person(\"Malte\", \"Grosser\", , \"malte.grosser@gmail.com\", role = c(\"aut\", \"cre\")))", - "Maintainer": "Malte Grosser ", - "Depends": [ - "R (>= 3.2)" - ], - "Imports": [ - "stringr", - "stringi" - ], - "Suggests": [ - "testthat", - "covr", - "tibble", - "purrrlyr", - "knitr", - "rmarkdown", - "magrittr" - ], - "URL": "https://github.com/Tazinho/snakecase", - "BugReports": "https://github.com/Tazinho/snakecase/issues", - "Encoding": "UTF-8", - "License": "GPL-3", - "RoxygenNote": "6.1.1", - "VignetteBuilder": "knitr", - "NeedsCompilation": "no", - "Author": "Malte Grosser [aut, cre]", - "Repository": "CRAN" - }, "sodium": { "Package": "sodium", "Version": "1.4.0", @@ -9021,33 +7999,6 @@ "NeedsCompilation": "yes", "Repository": "CRAN" }, - "sparkline": { - "Package": "sparkline", - "Version": "2.0", - "Source": "Repository", - "Type": "Package", - "Title": "'jQuery' Sparkline 'htmlwidget'", - "Date": "2016-11-10", - "Authors@R": "c( person(\"Ramnath\", \"Vaidyanathan\", email = \"ramnath.vaidya@gmail.com\", role = c(\"aut\", \"cre\")), person(\"Kent\", \"Russell\", email = \"kent.russell@timelyportfolio.com\", role = c(\"aut\", \"ctb\")), person(\"Gareth\", \"Watts\", role = c(\"aut\", \"cph\"), comment = \"jquery.sparkline library in htmlwidgets/lib, https://github.com/gwatts/jquery.sparkline\"), person(family = \"jQuery Foundation\", role = \"cph\", comment = \"jQuery library\"), person(family = \"jQuery contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery library; authors listed in inst/htmlwidgets/lib/jquery/jquery-AUTHORS.txt\" ) )", - "Maintainer": "Ramnath Vaidyanathan ", - "Description": "Include interactive sparkline charts in all R contexts with the convenience of 'htmlwidgets'.", - "Imports": [ - "htmltools", - "htmlwidgets (>= 0.8)" - ], - "Suggests": [ - "formattable", - "knitr", - "rmarkdown", - "shiny" - ], - "License": "MIT + file LICENSE", - "RoxygenNote": "5.0.1", - "VignetteBuilder": "knitr", - "NeedsCompilation": "no", - "Author": "Ramnath Vaidyanathan [aut, cre], Kent Russell [aut, ctb], Gareth Watts [aut, cph] (jquery.sparkline library in htmlwidgets/lib, https://github.com/gwatts/jquery.sparkline), jQuery Foundation [cph] (jQuery library), jQuery contributors [ctb, cph] (jQuery library; authors listed in inst/htmlwidgets/lib/jquery/jquery-AUTHORS.txt)", - "Repository": "CRAN" - }, "stringi": { "Package": "stringi", "Version": "1.8.7", @@ -9122,46 +8073,6 @@ "Maintainer": "Hadley Wickham ", "Repository": "CRAN" }, - "svglite": { - "Package": "svglite", - "Version": "2.1.3", - "Source": "Repository", - "Title": "An 'SVG' Graphics Device", - "Authors@R": "c( person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"), person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"aut\"), person(\"Thomas Lin\", \"Pedersen\", , \"thomas.pedersen@posit.co\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-5147-4711\")), person(\"T Jake\", \"Luciani\", , \"jake@apache.org\", role = \"aut\"), person(\"Matthieu\", \"Decorde\", , \"matthieu.decorde@ens-lyon.fr\", role = \"aut\"), person(\"Vaudor\", \"Lise\", , \"lise.vaudor@ens-lyon.fr\", role = \"aut\"), person(\"Tony\", \"Plate\", role = \"ctb\", comment = \"Early line dashing code\"), person(\"David\", \"Gohel\", role = \"ctb\", comment = \"Line dashing code and early raster code\"), person(\"Yixuan\", \"Qiu\", role = \"ctb\", comment = \"Improved styles; polypath implementation\"), person(\"Håkon\", \"Malmedal\", role = \"ctb\", comment = \"Opacity code\"), person(\"Posit, PBC\", role = c(\"cph\", \"fnd\")) )", - "Description": "A graphics device for R that produces 'Scalable Vector Graphics'. 'svglite' is a fork of the older 'RSvgDevice' package.", - "License": "GPL (>= 2)", - "URL": "https://svglite.r-lib.org, https://github.com/r-lib/svglite", - "BugReports": "https://github.com/r-lib/svglite/issues", - "Depends": [ - "R (>= 3.5.0)" - ], - "Imports": [ - "systemfonts (>= 1.0.0)" - ], - "Suggests": [ - "covr", - "fontquiver (>= 0.2.0)", - "htmltools", - "knitr", - "rmarkdown", - "testthat (>= 3.0.0)", - "xml2 (>= 1.0.0)" - ], - "LinkingTo": [ - "cpp11", - "systemfonts" - ], - "VignetteBuilder": "knitr", - "Config/Needs/website": "tidyverse/tidytemplate", - "Encoding": "UTF-8", - "RoxygenNote": "7.2.3", - "SystemRequirements": "libpng", - "Config/testthat/edition": "3", - "NeedsCompilation": "yes", - "Author": "Hadley Wickham [aut], Lionel Henry [aut], Thomas Lin Pedersen [cre, aut] (), T Jake Luciani [aut], Matthieu Decorde [aut], Vaudor Lise [aut], Tony Plate [ctb] (Early line dashing code), David Gohel [ctb] (Line dashing code and early raster code), Yixuan Qiu [ctb] (Improved styles; polypath implementation), Håkon Malmedal [ctb] (Opacity code), Posit, PBC [cph, fnd]", - "Maintainer": "Thomas Lin Pedersen ", - "Repository": "CRAN" - }, "sys": { "Package": "sys", "Version": "3.4.3", @@ -9522,7 +8433,7 @@ }, "tinytex": { "Package": "tinytex", - "Version": "0.56", + "Version": "0.57", "Source": "Repository", "Type": "Package", "Title": "Helper Functions to Install and Maintain TeX Live, and Compile LaTeX Documents", @@ -9914,40 +8825,6 @@ "Maintainer": "Jennifer Bryan ", "Repository": "CRAN" }, - "webshot": { - "Package": "webshot", - "Version": "0.5.5", - "Source": "Repository", - "Title": "Take Screenshots of Web Pages", - "Authors@R": "c( person(\"Winston\", \"Chang\", email = \"winston@rstudio.com\", role = c(\"aut\", \"cre\")), person(\"Yihui\", \"Xie\", role = \"ctb\"), person(\"Francois\", \"Guillem\", role = \"ctb\"), person(\"Barret\", \"Schloerke\", role = \"ctb\"), person(\"Nicolas\", \"Perriault\", role = \"ctb\", comment = \"The CasperJS library\") )", - "Description": "Takes screenshots of web pages, including Shiny applications and R Markdown documents.", - "Depends": [ - "R (>= 3.0)" - ], - "Imports": [ - "magrittr", - "jsonlite", - "callr" - ], - "Suggests": [ - "httpuv", - "knitr", - "rmarkdown", - "shiny", - "testthat (>= 3.0.0)" - ], - "License": "GPL-2", - "SystemRequirements": "PhantomJS for taking screenshots, ImageMagick or GraphicsMagick and OptiPNG for manipulating images.", - "RoxygenNote": "7.2.3", - "Encoding": "UTF-8", - "URL": "https://wch.github.io/webshot/, https://github.com/wch/webshot/", - "BugReports": "https://github.com/wch/webshot/issues", - "Config/testthat/edition": "3", - "NeedsCompilation": "no", - "Author": "Winston Chang [aut, cre], Yihui Xie [ctb], Francois Guillem [ctb], Barret Schloerke [ctb], Nicolas Perriault [ctb] (The CasperJS library)", - "Maintainer": "Winston Chang ", - "Repository": "CRAN" - }, "withr": { "Package": "withr", "Version": "3.0.2", @@ -9988,7 +8865,7 @@ }, "writexl": { "Package": "writexl", - "Version": "1.5.3", + "Version": "1.5.4", "Source": "Repository", "Type": "Package", "Title": "Export Data Frames to Excel 'xlsx' Format", @@ -10178,9 +9055,9 @@ }, "zoo": { "Package": "zoo", - "Version": "1.8-13", + "Version": "1.8-14", "Source": "Repository", - "Date": "2025-02-20", + "Date": "2025-04-09", "Title": "S3 Infrastructure for Regular and Irregular Time Series (Z's Ordered Observations)", "Authors@R": "c(person(given = \"Achim\", family = \"Zeileis\", role = c(\"aut\", \"cre\"), email = \"Achim.Zeileis@R-project.org\", comment = c(ORCID = \"0000-0003-0918-3766\")), person(given = \"Gabor\", family = \"Grothendieck\", role = \"aut\", email = \"ggrothendieck@gmail.com\"), person(given = c(\"Jeffrey\", \"A.\"), family = \"Ryan\", role = \"aut\", email = \"jeff.a.ryan@gmail.com\"), person(given = c(\"Joshua\", \"M.\"), family = \"Ulrich\", role = \"ctb\", email = \"josh.m.ulrich@gmail.com\"), person(given = \"Felix\", family = \"Andrews\", role = \"ctb\", email = \"felix@nfrac.org\"))", "Description": "An S3 class with methods for totally ordered indexed observations. It is particularly aimed at irregular time series of numeric vectors/matrices and factors. zoo's key design goals are independence of a particular index/date/time class and consistency with ts and base R by providing methods to extend standard generics.", @@ -10192,7 +9069,7 @@ "AER", "coda", "chron", - "ggplot2 (>= 3.0.0)", + "ggplot2 (>= 3.5.0)", "mondate", "scales", "stinepack", diff --git a/tests/testthat/test-data_plots.R b/tests/testthat/test-data_plots.R index a173d378..9ac771ae 100644 --- a/tests/testthat/test-data_plots.R +++ b/tests/testthat/test-data_plots.R @@ -46,7 +46,7 @@ test_that("create_plot works", { p <- p_list[[1]] + ggplot2::labs(title = "Test plot") expect_equal(length(p_list), 2) - expect_true(ggplot2::is.ggplot(p)) + expect_true(ggplot2::is_ggplot(p)) # Includes helper functions # wrap_plot_list @@ -60,7 +60,7 @@ test_that("create_plot works", { ) lapply(p_list, \(.x){ - expect_true(ggplot2::is.ggplot(.x)) + expect_true(ggplot2::is_ggplot(.x)) }) purrr::map2(p_list, list(11, 11), \(.x, .y){ diff --git a/vignettes/data-types.Rmd b/vignettes/data-types.Rmd index c7852cfc..2c23895f 100644 --- a/vignettes/data-types.Rmd +++ b/vignettes/data-types.Rmd @@ -12,6 +12,7 @@ knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) +options(rmarkdown.html_vignette.check_title = FALSE) ``` ```{r setup} From d21d4e39a92c256579e20df952898d3bb6d796b5 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Wed, 23 Apr 2025 14:25:55 +0200 Subject: [PATCH 7/9] wresteling sankey plots --- R/plot_sankey.R | 58 +++++++++++++++++++++++++++++---------- man/plot_sankey_single.Rd | 6 +++- 2 files changed, 48 insertions(+), 16 deletions(-) diff --git a/R/plot_sankey.R b/R/plot_sankey.R index 55a0b4e3..473e7b77 100644 --- a/R/plot_sankey.R +++ b/R/plot_sankey.R @@ -22,7 +22,7 @@ sankey_ready <- function(data, pri, sec, numbers = "count", ...) { data[c(pri, sec)] <- data[c(pri, sec)] |> dplyr::mutate(dplyr::across(!dplyr::where(is.factor), forcats::as_factor)) - out <- dplyr::count(data, !!dplyr::sym(pri), !!dplyr::sym(sec)) + out <- dplyr::count(data, !!dplyr::sym(pri), !!dplyr::sym(sec), .drop = FALSE) out <- out |> dplyr::group_by(!!dplyr::sym(pri)) |> @@ -73,9 +73,17 @@ str_remove_last <- function(data, pattern = "\n") { #' @examples #' ds <- data.frame(g = sample(LETTERS[1:2], 100, TRUE), first = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE)), last = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE))) #' ds |> plot_sankey("first", "last") -#' ds |> plot_sankey("first", "last", color.group = "y") -#' ds |> plot_sankey("first", "last", z = "g", color.group = "y") -plot_sankey <- function(data, pri, sec, ter = NULL, color.group = "x", colors = NULL) { +#' ds |> plot_sankey("first", "last", color.group = "sec") +#' ds |> plot_sankey("first", "last", ter = "g", color.group = "sec") +#' mtcars |> +#' default_parsing() |> +#' plot_sankey("cyl", "gear", "am", color.group = "pri") +#' ## In this case, the last plot as the secondary variable in wrong order +#' ## Dont know why... +#' mtcars |> +#' default_parsing() |> +#' plot_sankey("cyl", "gear", "vs", color.group = "pri") +plot_sankey <- function(data, pri, sec, ter = NULL, color.group = "pri", colors = NULL) { if (!is.null(ter)) { ds <- split(data, data[ter]) } else { @@ -83,16 +91,12 @@ plot_sankey <- function(data, pri, sec, ter = NULL, color.group = "x", colors = } out <- lapply(ds, \(.ds){ - plot_sankey_single(.ds, x = pri, y = sec, color.group = color.group, colors = colors) + plot_sankey_single(.ds, pri = pri, sec = sec, color.group = color.group, colors = colors) }) patchwork::wrap_plots(out) } -default_theme <- function() { - theme_void() -} - #' Beautiful sankey plot #' #' @param color.group set group to colour by. "x" or "y". @@ -106,15 +110,26 @@ default_theme <- function() { #' @examples #' ds <- data.frame(g = sample(LETTERS[1:2], 100, TRUE), first = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE)), last = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE))) #' ds |> plot_sankey_single("first", "last") -#' ds |> plot_sankey_single("first", "last", color.group = "y") +#' ds |> plot_sankey_single("first", "last", color.group = "sec") #' data.frame( #' g = sample(LETTERS[1:2], 100, TRUE), #' first = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE)), #' last = sample(c(TRUE, FALSE, FALSE), 100, TRUE) #' ) |> #' plot_sankey_single("first", "last", color.group = "pri") +#' mtcars |> +#' default_parsing() |> +#' str() +#' plot_sankey_single("cyl", "vs", color.group = "pri") plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), colors = NULL, ...) { color.group <- match.arg(color.group) + + data_orig <- data + data[c(pri, sec)] <- data[c(pri, sec)] |> + dplyr::mutate(dplyr::across(dplyr::where(is.factor), forcats::fct_drop)) + + # browser() + data <- data |> sankey_ready(pri = pri, sec = sec, ...) library(ggalluvial) @@ -124,11 +139,17 @@ plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), co if (is.null(colors)) { if (color.group == "sec") { - main.colors <- viridisLite::viridis(n = length(levels(data[[sec]]))) + main.colors <- viridisLite::viridis(n = length(levels(data_orig[[sec]]))) + ## Only keep colors for included levels + main.colors <- main.colors[match(levels(data[[sec]]), levels(data_orig[[sec]]))] + secondary.colors <- rep(na.color, length(levels(data[[pri]]))) label.colors <- Reduce(c, lapply(list(secondary.colors, rev(main.colors)), contrast_text)) } else { - main.colors <- viridisLite::viridis(n = length(levels(data[[pri]]))) + main.colors <- viridisLite::viridis(n = length(levels(data_orig[[pri]]))) + ## Only keep colors for included levels + main.colors <- main.colors[match(levels(data[[pri]]), levels(data_orig[[pri]]))] + secondary.colors <- rep(na.color, length(levels(data[[sec]]))) label.colors <- Reduce(c, lapply(list(rev(main.colors), secondary.colors), contrast_text)) } @@ -146,7 +167,11 @@ plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), co if (color.group == "sec") { p <- p + ggalluvial::geom_alluvium( - ggplot2::aes(fill = !!dplyr::sym(sec), color = !!dplyr::sym(sec)), + ggplot2::aes( + fill = !!dplyr::sym(sec) # , + ## Including will print strings when levels are empty + # color = !!dplyr::sym(sec) + ), width = 1 / 16, alpha = .8, knot.pos = 0.4, @@ -158,7 +183,10 @@ plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), co } else { p <- p + ggalluvial::geom_alluvium( - ggplot2::aes(fill = !!dplyr::sym(pri), color = !!dplyr::sym(pri)), + ggplot2::aes( + fill = !!dplyr::sym(pri) # , + # color = !!dplyr::sym(pri) + ), width = 1 / 16, alpha = .8, knot.pos = 0.4, @@ -182,7 +210,7 @@ plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), co labels = group_labels ) + ggplot2::scale_fill_manual(values = colors[-1], na.value = colors[1]) + - ggplot2::scale_color_manual(values = main.colors) + + # ggplot2::scale_color_manual(values = main.colors) + ggplot2::theme_void() + ggplot2::theme( legend.position = "none", diff --git a/man/plot_sankey_single.Rd b/man/plot_sankey_single.Rd index 0c48fde1..6b2e7888 100644 --- a/man/plot_sankey_single.Rd +++ b/man/plot_sankey_single.Rd @@ -30,11 +30,15 @@ Beautiful sankey plot \examples{ ds <- data.frame(g = sample(LETTERS[1:2], 100, TRUE), first = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE)), last = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE))) ds |> plot_sankey_single("first", "last") -ds |> plot_sankey_single("first", "last", color.group = "y") +ds |> plot_sankey_single("first", "last", color.group = "sec") data.frame( g = sample(LETTERS[1:2], 100, TRUE), first = REDCapCAST::as_factor(sample(letters[1:4], 100, TRUE)), last = sample(c(TRUE, FALSE, FALSE), 100, TRUE) ) |> plot_sankey_single("first", "last", color.group = "pri") +mtcars |> + default_parsing() |> + str() +plot_sankey_single("cyl", "vs", color.group = "pri") } From 155bdb80984b83a072a854cd740ee775c4154a16 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Wed, 23 Apr 2025 14:26:05 +0200 Subject: [PATCH 8/9] bug --- R/plot_box.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/plot_box.R b/R/plot_box.R index 5a830d14..d0165ddf 100644 --- a/R/plot_box.R +++ b/R/plot_box.R @@ -46,7 +46,7 @@ plot_box_single <- function(data, pri, sec=NULL, seed = 2103) { if (is.null(sec)) { sec <- "All" - data[[y]] <- sec + data[[sec]] <- sec } discrete <- !data_type(data[[sec]]) %in% "continuous" From a59b980a950ff21429a599da28a943c43ad5f4d2 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Wed, 23 Apr 2025 14:26:18 +0200 Subject: [PATCH 9/9] moving notes on visuals --- inst/apps/FreesearchR/www/notes_visuals.html | 413 ------------------- inst/apps/FreesearchR/www/notes_visuals.md | 11 - vignettes/visuals.Rmd | 55 +++ 3 files changed, 55 insertions(+), 424 deletions(-) delete mode 100644 inst/apps/FreesearchR/www/notes_visuals.html delete mode 100644 inst/apps/FreesearchR/www/notes_visuals.md create mode 100644 vignettes/visuals.Rmd diff --git a/inst/apps/FreesearchR/www/notes_visuals.html b/inst/apps/FreesearchR/www/notes_visuals.html deleted file mode 100644 index b5f8545a..00000000 --- a/inst/apps/FreesearchR/www/notes_visuals.html +++ /dev/null @@ -1,413 +0,0 @@ - - - - - - - - - - - - - -notes_visuals - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - -
-

Basic visualisations

-

This section on plotting data is kept very minimal, and includes only -the most common plot types for clinical projects.

-

If you want to go further, have a look at these sites with -suggestions and sample code for data plotting:

- -
- - - - -
- - - - - - - - - - - - - - - diff --git a/inst/apps/FreesearchR/www/notes_visuals.md b/inst/apps/FreesearchR/www/notes_visuals.md deleted file mode 100644 index 58e3a758..00000000 --- a/inst/apps/FreesearchR/www/notes_visuals.md +++ /dev/null @@ -1,11 +0,0 @@ -# Basic visualisations - -The goal of ***FreesearchR*** is to keep things simple. Visuals can get very complicated. We provide a selection of plots, that helps visualise typical clinical and will be enough for most use cases, and for publishing to most journals. - -If you want to go further, have a look at these sites with suggestions and sample code for data plotting: - -- [*R* Charts](https://r-charts.com/): Extensive gallery with great plots - -- [*R* Graph gallery](https://r-graph-gallery.com/): Another gallery with great graphs - -- [graphics principles](https://graphicsprinciples.github.io/): Easy to follow recommendations for clear visuals. diff --git a/vignettes/visuals.Rmd b/vignettes/visuals.Rmd new file mode 100644 index 00000000..830d16ee --- /dev/null +++ b/vignettes/visuals.Rmd @@ -0,0 +1,55 @@ +--- +title: "On visuals" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{visuals} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +options(rmarkdown.html_vignette.check_title = FALSE) +``` + +```{r setup} +library(FreesearchR) +``` + +## Basic visualisations + +The goal of ***FreesearchR*** is to keep things simple. Visuals can get very complicated. We provide a selection of plots, that helps visualise typical clinical and will be enough for most use cases, and for publishing to most journals. + +If you want to go further, have a look at these sites with suggestions and sample code for data plotting: + +- [*R* Charts](https://r-charts.com/): Extensive gallery with great plots + +- [*R* Graph gallery](https://r-graph-gallery.com/): Another gallery with great graphs + +- [graphics principles](https://graphicsprinciples.github.io/): Easy to follow recommendations for clear visuals. + + +### Available plots + +Below are the available plot types listed. + +```{r echo = FALSE, eval = TRUE} +c("continuous", "dichotomous", "categorical") |> + lapply(\(.x){ + dplyr::bind_cols( + dplyr::tibble("Data type"=.x), + supported_plots() |> + lapply(\(.y){ + if (.x %in% .y$primary.type){ + .y[c("descr","note")]|> dplyr::bind_cols() + } +})|> + dplyr::bind_rows() |> + setNames(c("Plot type","Description"))) + }) |> + dplyr::bind_rows() |> + knitr::kable() +```