From 67cfc313048fe40c6a66ef087d97ac49a0e8303f Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Fri, 8 Aug 2025 14:08:44 +0200 Subject: [PATCH] new version --- CITATION.cff | 2 +- R/app_version.R | 2 +- R/hosted_version.R | 2 +- R/sysdata.rda | Bin 2775 -> 2676 bytes SESSION.md | 31 ++++---------- app_docker/app.R | 82 +++++++++++++++++++++++------------- inst/apps/FreesearchR/app.R | 50 +++++++++++++--------- 7 files changed, 95 insertions(+), 74 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 7600d6d..d9fdbae 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -9,7 +9,7 @@ type: software license: AGPL-3.0-or-later title: 'FreesearchR: A free and open-source browser based data analysis tool for researchers with publication ready output' -version: 25.7.3 +version: 25.8.1 doi: 10.5281/zenodo.14527429 identifiers: - type: url diff --git a/R/app_version.R b/R/app_version.R index 8583a07..9942e6f 100644 --- a/R/app_version.R +++ b/R/app_version.R @@ -1 +1 @@ -app_version <- function()'25.7.3' +app_version <- function()'25.8.1' diff --git a/R/hosted_version.R b/R/hosted_version.R index 58b7262..a5356f8 100644 --- a/R/hosted_version.R +++ b/R/hosted_version.R @@ -1 +1 @@ -hosted_version <- function()'v25.7.3-250808' +hosted_version <- function()'v25.8.1-250808' diff --git a/R/sysdata.rda b/R/sysdata.rda index b17ce24a9a058a9bb8b9bb3e4b982989bc3af017..c463a2ac13e3834a10ee66cad307cb30cf2debde 100644 GIT binary patch literal 2676 zcmV-)3XAnZT4*^jL0KkKSyR)p%K#a1f5iX)Xazw3|KNXb-@w2B|L{Nn03Zkf;0xau zI}Mq~f#6b+phy9H@IHX2&@`eNn1CUWO)?D;qaZ45hpDJ~Lm&o*jTt>m^q|!|0%}bP zdY+>o@lR2-jQ{`u00000X_G-JkPSUR8UO$?G5`Po00E$rNg_=Yc~3}bh#COU00003 zKmY)0Q$ePH1JVyr0002c02%<%pa3FDnI@-`)jv~HL7|`rr~^O%&;w6U7$6xfm>bEI zqaYWTP!?H83So+>bM+_@UH!Z!0Z?#YA&<$kn=H@+5Mtig-`+11;RLvn$^xOmFzZQf zmbI8wbRwuD#)$qd)6v}ja5r^~Kll6m(fj`oO$OulT7>A+*0rSQ3E%28``#%CTXiU9 zYSy_CksbfIrI1f&Du=zdIXrC=g_p@}Qiqc)TGms3B7lWC;+vjRAn|F}M79M7nkuBq zf+dt-?qp^PNhMK;3-~)(cm>2^o880v4@1EB)^e?_jjvVLU4f!Y1_W9y4Vut3g^sji zSkq`?66H!e{(Ly=!()$glw{li2c_}Oc6CrqSgM9>*|@tB+r7GQL>tTT(qklx6je}BSixZy zDHaPBC<_Hr0>BmsB#4S43IeLdfSld`CT-(Q{HspUG{K!xt>1jj@X~7qLt)uuPJoums6n@#fR>}^e* z%(Ig=XrdX5<#9G{Dxk;@6bfSHO0ysmVGWTis3xk3#g%h5)1zlH#HXlDR|wu(Xs%Gb zVKy~IYvbl-%ao8?ySG@@ZIt#Y#W1Ij8TgQVJGSM)uxN2l{ z+VX9_+ExgnD2X74TP%i>ZD9_Y2*HeV5gTX(iYr8(GlNh(9UYD&fGRLH2Js#$P^G8s!!P+xr`C&Hf$ z@O4EI$R*jC4O2!%fwr}p65Bp5+=S$T1Ym$L5N&{tElLMQ2v{T`ktzx<%%~lXzK%<~ znG9)ijdKe&fDmOcX_m~1M=eGpVp?JqQ00@DLgnstNHFeGX|{-F3u;OX6o|mp%$DD! zF^V&oAkM8MC@_k!L^=>Tv!%c=wHYk3f`yx8od|UjcfIcY)6iN}Qrf=4RKhiBZQj>1 z1wf+&ZdfpK=~ZRTY>k%1tW*_wbPQ*)5Hr9)GuQ=*hME$n3Ph@rDG3Ei|mb?g73h+(RR!s5w z+)dYd+bm7B@E}Cv&BqSkEh5fT*B6$SRI64& z5<(TQm}4$jax+;$6+B#{mRhL0QAMcsTow~hsSd}z(aX2TOTQlO<8zLhSfv)Qq5_ji z2Q#>DOwAhD;epQQ1=veVSi2TY0j5@FvC~Uv+gmECMnSsNx2IeqXDA3eTf1GZCsw|o zAnlmD_{}rX?2-6TI7~T9$&;j|0|?$JG+2#R#&pmCKnV4|rTME+4DZ5306++-O62G9 zKm-7a@hbO=53*P`Vi*|!QyzN)B%VF~$6t`#+$CDK_;~uh#ouF<+1$|Of!s&S+~8yE zlKK%e$H(pOYb=OQ@%D%yz!tgQBTK7slo`-7zT=z!80iuBG;FC&hAR8LjH@x=ca#f* z?VUnFPLt|dj3xrjR3<>h8?Zz0VNrMjY5EW0+2Xkph2D5zZu6@&>dS*Rnj&$n{V3+{ zkik)ebtBfrTl`aQM$F7K6o=7vWqTlY4((Uk56o&y1bNL7cHCh-Jgimav^TZM>6@CV zw?%M{?*WDGx}mECU1Lhiw#;%V(hQsx@Ti7wC>cv)VtJQ3#zxnRjK+f$GhfNwci8|K zob$3NX@csm1C7JLd(Qnt(xhGpZE@Q_%8R6RelJEzSZ8=>O52UXeVKT-~&wmZf-d^9Qhb!ZG3oXycevdj>t4Ks%3SFxqw=~V<9NR;~iLQroJ$Rf7 z%$Cjg5{$P3LCn>GB}T;r^DmQtI^;Ij2KDiA&yZM;<9nrWcQ=97w(K%mcdWWt413oB1HM8sL>}w19ZAs1hnLdHJ_8<3keamU0oWt2Y{KV!Pk3rvI)E*J`wb7`~zXvS)L0ZhbgYHZm4AgtQavvhmO%KC{-Mr+S0@)bFvdUWVAK|LwWtVfWg z=su#q^_Z^g!1?Al#tgo#7EzO?h)g9OHPJy7?jfMD@lPEd=B;SiA|BVZn~iKlkW*+u zxnZ6hVXVW}y2Ny4Tx6C&m^bLQeBJrF{hJzFGq!4|XGtSZUCzOCdWEEdM6MUKfgokm z2@tt5&2OVyg>#(Fw{|6kUSXJ))E$87$43$?2Qw?KgB6ugaJ@AyM{L2MKKa{)s{wsT zZA=x$ip2D??+QkE6?d~#)a;5xMG3Xq(e1ULD%Fk)O1yfd;;aSgAZE`*&fxuFcpcDZ4-~a#s4jPz%5ugc>5Hd!S)jU!9nj_GjP&68PMu6D_RX@b1=~Mk8 zp3Jwq!|DVnE(I*rh`pAKpLJPN>MZ!G|M%gbkir;%0~13)$RyH8gp<_T zH5wWK000000MGyc8C1{!0iXZ?000000001qNvWxclhafThSUeCkN^Mx4FDK`WWg+M zCFKn)`9@r6;$SHP!I!uZqmgRY_Ntu2is!#qy`Yfy|ur*Tqm{zl#;Xtkkl>d zPPMo5tE7Noh^mgXK>Tj}c$eL~{)+U~HpOrHV+3z_S#T*@dNssH`x$}AFC>D$;{-3N z;bFmg2$AT-G6?OV+YXPMK|XA%Bj?>syxiL*3^6Vs86t7G6jkJx6YQ-7CLJeFa|c@} z;m0^;Bv8w}Dv;e0V-(FBDZ;}Nq{-G0mRZ?}ZD70Z*W>>O+UJjit0`>BwbzyTUy>Zn z0v=07CT5h8B207^0yJA3vbOaVYGTZ!8R~lVLUA+`o>*c)gobR=bdLUXXGjKtMiUq* z1fOJCLZ}Tgh}~dvq^#7YK!c6Cu1*FtE8l-}QuUih4O$jVGvC&nE;Em7!sWgb?BkpU zkq!ao2gSuzIhQiARKXsuTFr-rg_O)?inbiVs52*Y&dX7BIvc(Ucwm@m>>;>|V&zW* zPYjqw_%|6-l!n&MZya74n>VvA0_ntMA+f#{H5s+S@-Qv5>gs8|F_1>(k~wIdhmJN| zyu$AcOWx(E&bcHYkV-JeP(PU49$YfdHMDhh^~03nIV@Zy}7xz>dZiQA_%6) zs-po=2?hj&gb)#AQ7I4wL-!C-Tv9qIBYGBLj;Kf94 zF2_X1$q5MtAhBYQ6oP`NMFt>Q%NdcGRd3T=I38W6F83ZhQ*3w4lW7Bmxk^a9XYybK?7Uu zgQ^N+RWpOG2BZyyLye}{!wr*2pmkGM5^13)SvaZ*txV{#sI{RmDW<5f2_Xz&!CEF} zNwor1)F_ii?tzS!49~DeZj=ML3b81RNQXI2cTaJY<)R@B$AYr5Rz(#U(25&5xfPqo zh9cUdyIZ!xkP}NQAn(JYBJ6@otamBm)bOV!$s|(|R?H|5g}?(ru*4DxIvH$aAY`*j z*is~g3oc0AQOQU~>jAN?XlNz7Ad#6$I8@V-jt#E3?Y4#?jYQVC=8_T#L_I__5zsoQ zdSHUnZ6YBDtS+G9bz*6iLIJ6mWK&5wM517pu(@u;9J1umh6=X;g))*t33%Ja)wQ(7 z9Ad$t1+b_s3n=NJiQKun)3aqMX&W;LP%5(OB$_Zr&Q6dc(;T7C^Dj%D{qC0+GM>HHNcQ7$%`jZhxbqNIQSVDscstXR?1F4;C zte9GimQsStJ8x@-(sU&0Vc6_&q|A# z$xbvcLC%LX`AGo#5C|V;fYCSZ@R&m^3kX`FNGwQ-IL@tV2_TXWVwoUFHV|Z4(N4>l z8sf6bQm3Ins;;eL1VIC4DNT<)i&16_}Cb>M)mQ<~x5Lo~g5VlE@p>o5E zHI^bN=B62CqNwdf7NU4rQAss7Oi57heeSO|{dT+aYgsvI*|t`#Ei5R2q{b1>TF!}< zX2$p&|IODGH!TvDv3D#r4J6HJ80wX^w$%kEKE&I~y>s&GLJ*&y?aqoZ5Z*xq9)VSL zgFMGQ?Ww@60VNJsbe@s91rYqtT#>~l4_YoDf(k5jr^`-YTW#}#2q5)!1cC@Xcs6#? zA~jKWegnYqhOKKA^!)!{-T02LK+9KQI@Pz&;qrYK-A604y{=dt8+PWrBUyj^{;w zT0P3O+!e%2f7y?ovKiwQ<4uT*pyfj6X5AmO88j4}v_l5hpkm16#ktKmR7Ti^8IA@y zj3?gdmq>p^0jbk%B?1N6R04I}H6GKy5`C~sTNr{HNUo>4=33a}_`w?$OC2o^2)5gB zxcXn4#t?&kleVWt!>%bYY$#XB`fuZI=F55dzOFsE&jJ=lN%;>i8)&PDNMH(m%OSf| z^KF3#y72(=snA@axHB_}KSi@lT53Yv31gXz2_|d`L-F+S3yg;9rw4WNdDE~-fW9Zu z2Mc)!bTH!Q@_1YL!?G)tjeo$0cd*(j<$aVAF#*?bRZ9dd69lhJ7))z1NOLRf8NhCp z%(vvWyxQpW=it%5nHq^%W~$SUCSGnBqCz2J+Ll)&6mgwS@5BcZt9s!$aeXf4++_Dk z`)U}$=tju9XO}iWPuM~)ixefWwl2b|$FeXX9DyRE2cC_%xmbuL)h#3=SyXN`*OOHI z`S16^x!kT0V-BxrpdmYjZsbfjCW|$YD?$))h4@&K8JRFSL24jNG|6X%1`n0)djqOk z{p7_F0wO@B$ko@d);mxlTD6&t`!ZRQe!`lE5>>i2lLNGYf@Bd@s3l{(gVn^Go}{jw zjPCdC#8w5`9%bNH#o78v@Yujbd7fA32h?LhzE2|#c3!MKaq7@UTnc2bU5Q`Jb1w+c z?-lg+(*AC{9ipLIDw*`dY%B-@_i?mJL^{7L-L72%T3H}h6|7+Hrl{y~ZKRrM2m;;1 zM-6vN&QDjkl+uvRW;sJ9c>P>%)A zl#;iT2MH~or_H0T)tZrOrLV@^zTDnAc^N zB34lCqD1zJBUu;*Fb`Y3Q%ji8<1%?EL<}xhF>J1B#dbB240B^^o39*isST-uxmv8x zg)j5l8e3KDSjLKW!jTa|jecwkdD_DDtyy5n_;pLcSPN7@&6_zab_^@+%Bpzm-RPZ! zE@D$rUje4M&wo#@I72C7S`}2S$kh$*uDWazyq9urUS%P|lZ}xAB%EsBek*ZViqlgj dI!3om8O^ZVfts}{B~F3=7ji{7P>^NW9_V$d2gLvY diff --git a/SESSION.md b/SESSION.md index 835dc04..4e683ab 100644 --- a/SESSION.md +++ b/SESSION.md @@ -11,11 +11,11 @@ |collate |en_US.UTF-8 | |ctype |en_US.UTF-8 | |tz |Europe/Copenhagen | -|date |2025-07-22 | +|date |2025-08-08 | |rstudio |2025.05.0+496 Mariposa Orchid (desktop) | |pandoc |3.6.4 @ /opt/homebrew/bin/ (via rmarkdown) | |quarto |1.7.30 @ /usr/local/bin/quarto | -|FreesearchR |25.7.3.250722 | +|FreesearchR |25.8.1.250808 | -------------------------------------------------------------------------------- @@ -26,8 +26,6 @@ |apexcharter |0.4.4 |2024-09-06 |CRAN (R 4.4.1) | |askpass |1.2.1 |2024-10-04 |CRAN (R 4.4.1) | |assertthat |0.2.1 |2019-03-21 |CRAN (R 4.4.1) | -|attachment |0.4.5 |2025-03-14 |CRAN (R 4.4.1) | -|attempt |0.3.1 |2020-05-03 |CRAN (R 4.4.1) | |backports |1.5.0 |2024-05-23 |CRAN (R 4.4.1) | |base64enc |0.1-3 |2015-07-28 |CRAN (R 4.4.1) | |bayestestR |0.16.1 |2025-07-01 |CRAN (R 4.4.1) | @@ -45,7 +43,6 @@ |cardx |0.2.5 |2025-07-03 |CRAN (R 4.4.1) | |caTools |1.18.3 |2024-09-04 |CRAN (R 4.4.1) | |cellranger |1.1.0 |2016-07-27 |CRAN (R 4.4.0) | -|cffr |1.2.0 |2025-01-25 |CRAN (R 4.4.1) | |checkmate |2.3.2 |2024-07-29 |CRAN (R 4.4.0) | |class |7.3-23 |2025-01-01 |CRAN (R 4.4.1) | |classInt |0.4-11 |2025-01-08 |CRAN (R 4.4.1) | @@ -55,8 +52,6 @@ |colorspace |2.1-1 |2024-07-26 |CRAN (R 4.4.1) | |commonmark |2.0.0 |2025-07-07 |CRAN (R 4.4.1) | |crayon |1.5.3 |2024-06-20 |CRAN (R 4.4.1) | -|credentials |2.0.2 |2024-10-04 |CRAN (R 4.4.1) | -|curl |6.4.0 |2025-06-22 |CRAN (R 4.4.1) | |data.table |1.17.8 |2025-07-10 |CRAN (R 4.4.1) | |datamods |1.5.3 |2024-10-02 |CRAN (R 4.4.1) | |datawizard |1.2.0 |2025-07-17 |CRAN (R 4.4.1) | @@ -65,7 +60,6 @@ |devtools |2.4.5 |2022-10-11 |CRAN (R 4.4.0) | |DHARMa |0.4.7 |2024-10-18 |CRAN (R 4.4.1) | |digest |0.6.37 |2024-08-19 |CRAN (R 4.4.1) | -|dockerfiler |0.2.5 |2025-05-07 |CRAN (R 4.4.1) | |doParallel |1.0.17 |2022-02-07 |CRAN (R 4.4.0) | |dplyr |1.1.4 |2023-11-17 |CRAN (R 4.4.0) | |DT |0.33 |2024-04-04 |CRAN (R 4.4.0) | @@ -88,19 +82,16 @@ |foreach |1.5.2 |2022-02-02 |CRAN (R 4.4.0) | |foreign |0.8-90 |2025-03-31 |CRAN (R 4.4.1) | |Formula |1.2-5 |2023-02-24 |CRAN (R 4.4.1) | -|FreesearchR |25.7.3 |NA |NA | +|FreesearchR |25.8.1 |NA |NA | |fs |1.6.6 |2025-04-12 |CRAN (R 4.4.1) | |gdtools |0.4.2 |2025-03-27 |CRAN (R 4.4.1) | |generics |0.1.4 |2025-05-09 |CRAN (R 4.4.1) | -|gert |2.1.5 |2025-03-25 |CRAN (R 4.4.1) | |ggalluvial |0.12.5 |2023-02-22 |CRAN (R 4.4.0) | |ggcorrplot |0.1.4.1 |2023-09-05 |CRAN (R 4.4.0) | |ggforce |0.5.0 |2025-06-18 |CRAN (R 4.4.1) | |ggplot2 |3.5.2 |2025-04-09 |CRAN (R 4.4.1) | |ggridges |0.5.6 |2024-01-23 |CRAN (R 4.4.0) | |ggstats |0.10.0 |2025-07-02 |CRAN (R 4.4.1) | -|gh |1.5.0 |2025-05-26 |CRAN (R 4.4.1) | -|gitcreds |0.1.2 |2022-09-08 |CRAN (R 4.4.1) | |glue |1.8.0 |2024-09-30 |CRAN (R 4.4.1) | |gridExtra |2.3 |2017-09-09 |CRAN (R 4.4.1) | |gt |1.0.0 |2025-04-05 |CRAN (R 4.4.1) | @@ -114,13 +105,11 @@ |htmltools |0.5.8.1 |2024-04-04 |CRAN (R 4.4.1) | |htmlwidgets |1.6.4 |2023-12-06 |CRAN (R 4.4.0) | |httpuv |1.6.16 |2025-04-16 |CRAN (R 4.4.1) | -|httr2 |1.2.1 |2025-07-22 |CRAN (R 4.4.1) | |IDEAFilter |0.2.0 |2024-04-15 |CRAN (R 4.4.0) | |insight |1.3.1 |2025-06-30 |CRAN (R 4.4.1) | |iterators |1.0.14 |2022-02-05 |CRAN (R 4.4.1) | |jquerylib |0.1.4 |2021-04-26 |CRAN (R 4.4.0) | |jsonlite |2.0.0 |2025-03-27 |CRAN (R 4.4.1) | -|jsonvalidate |1.5.0 |2025-02-07 |CRAN (R 4.4.1) | |KernSmooth |2.23-26 |2025-01-01 |CRAN (R 4.4.1) | |keyring |1.4.1 |2025-06-15 |CRAN (R 4.4.1) | |knitr |1.50 |2025-03-16 |CRAN (R 4.4.1) | @@ -128,11 +117,9 @@ |later |1.4.2 |2025-04-08 |CRAN (R 4.4.1) | |lattice |0.22-7 |2025-04-02 |CRAN (R 4.4.1) | |lifecycle |1.0.4 |2023-11-07 |CRAN (R 4.4.1) | -|litedown |0.7 |2025-04-08 |CRAN (R 4.4.1) | |lme4 |1.1-37 |2025-03-26 |CRAN (R 4.4.1) | |lubridate |1.9.4 |2024-12-08 |CRAN (R 4.4.1) | |magrittr |2.0.3 |2022-03-30 |CRAN (R 4.4.1) | -|markdown |2.0 |2025-03-23 |CRAN (R 4.4.1) | |MASS |7.3-65 |2025-02-28 |CRAN (R 4.4.1) | |Matrix |1.7-3 |2025-03-11 |CRAN (R 4.4.1) | |memoise |2.0.1 |2021-11-26 |CRAN (R 4.4.0) | @@ -147,7 +134,6 @@ |opdisDownsampling |1.0.1 |2024-04-15 |CRAN (R 4.4.0) | |openssl |2.3.3 |2025-05-26 |CRAN (R 4.4.1) | |openxlsx2 |1.17 |2025-07-04 |CRAN (R 4.4.1) | -|pak |0.9.0 |2025-05-27 |CRAN (R 4.4.1) | |parameters |0.27.0 |2025-07-09 |CRAN (R 4.4.1) | |patchwork |1.3.1 |2025-06-21 |CRAN (R 4.4.1) | |pbmcapply |1.5.1 |2022-04-28 |CRAN (R 4.4.1) | @@ -159,6 +145,7 @@ |pkgload |1.4.0 |2024-06-28 |CRAN (R 4.4.0) | |plyr |1.8.9 |2023-10-02 |CRAN (R 4.4.1) | |polyclip |1.10-7 |2024-07-23 |CRAN (R 4.4.1) | +|polylabelr |0.3.0 |2024-11-19 |CRAN (R 4.4.1) | |pracma |2.4.4 |2023-11-10 |CRAN (R 4.4.1) | |processx |3.8.6 |2025-02-21 |CRAN (R 4.4.1) | |profvis |0.4.0 |2024-09-20 |CRAN (R 4.4.1) | @@ -169,10 +156,13 @@ |qqconf |1.3.2 |2023-04-14 |CRAN (R 4.4.0) | |qqplotr |0.0.6 |2023-01-25 |CRAN (R 4.4.0) | |quarto |1.4.4 |2024-07-20 |CRAN (R 4.4.0) | +|R.cache |0.17.0 |2025-05-02 |CRAN (R 4.4.1) | +|R.methodsS3 |1.8.2 |2022-06-13 |CRAN (R 4.4.1) | +|R.oo |1.27.1 |2025-05-02 |CRAN (R 4.4.1) | +|R.utils |2.13.0 |2025-02-24 |CRAN (R 4.4.1) | |R6 |2.6.1 |2025-02-15 |CRAN (R 4.4.1) | |ragg |1.4.0 |2025-04-10 |CRAN (R 4.4.1) | |rankinPlot |1.1.0 |2023-01-30 |CRAN (R 4.4.0) | -|rappdirs |0.3.3 |2021-01-31 |CRAN (R 4.4.1) | |rbibutils |2.3 |2024-10-04 |CRAN (R 4.4.1) | |RColorBrewer |1.1-3 |2022-04-03 |CRAN (R 4.4.1) | |Rcpp |1.1.0 |2025-07-02 |CRAN (R 4.4.1) | @@ -203,14 +193,13 @@ |see |0.11.0 |2025-03-11 |CRAN (R 4.4.1) | |sessioninfo |1.2.3 |2025-02-05 |CRAN (R 4.4.1) | |shiny |1.11.1 |2025-07-03 |CRAN (R 4.4.1) | -|shiny2docker |0.0.3 |2025-06-28 |CRAN (R 4.4.1) | |shinybusy |0.3.3 |2024-03-09 |CRAN (R 4.4.0) | |shinyjs |2.1.0 |2021-12-23 |CRAN (R 4.4.0) | |shinyTime |1.0.3 |2022-08-19 |CRAN (R 4.4.0) | |shinyWidgets |0.9.0 |2025-02-21 |CRAN (R 4.4.1) | |stringi |1.8.7 |2025-03-27 |CRAN (R 4.4.1) | |stringr |1.5.1 |2023-11-14 |CRAN (R 4.4.0) | -|sys |3.4.3 |2024-10-04 |CRAN (R 4.4.1) | +|styler |1.10.3 |2024-04-07 |CRAN (R 4.4.0) | |systemfonts |1.2.3 |2025-04-30 |CRAN (R 4.4.1) | |testthat |3.2.3 |2025-01-13 |CRAN (R 4.4.1) | |textshaping |1.0.1 |2025-05-01 |CRAN (R 4.4.1) | @@ -226,7 +215,6 @@ |urlchecker |1.0.1 |2021-11-30 |CRAN (R 4.4.1) | |usethis |3.1.0 |2024-11-26 |CRAN (R 4.4.1) | |uuid |1.2-1 |2024-07-29 |CRAN (R 4.4.1) | -|V8 |6.0.4 |2025-06-04 |CRAN (R 4.4.1) | |vctrs |0.6.5 |2023-12-01 |CRAN (R 4.4.0) | |vroom |1.6.5 |2023-12-05 |CRAN (R 4.4.0) | |withr |3.0.2 |2024-10-28 |CRAN (R 4.4.1) | @@ -235,5 +223,4 @@ |xml2 |1.3.8 |2025-03-14 |CRAN (R 4.4.1) | |xtable |1.8-4 |2019-04-21 |CRAN (R 4.4.1) | |yaml |2.3.10 |2024-07-26 |CRAN (R 4.4.1) | -|yesno |0.1.3 |2024-07-26 |CRAN (R 4.4.1) | |zip |2.3.3 |2025-05-13 |CRAN (R 4.4.1) | diff --git a/app_docker/app.R b/app_docker/app.R index 6a7ae1e..ac51ad5 100644 --- a/app_docker/app.R +++ b/app_docker/app.R @@ -49,7 +49,7 @@ library(rlang) #### Current file: /Users/au301842/FreesearchR/R//app_version.R ######## -app_version <- function()'25.7.2' +app_version <- function()'25.8.1' ######## @@ -2338,7 +2338,10 @@ line_break <- function(data, lineLength = 20, force = FALSE) { #' @param data list of ggplot2 objects #' @param tag_levels passed to patchwork::plot_annotation if given. Default is NULL #' @param title panel title -#' @param ... ignored for argument overflow +#' @param guides passed to patchwork::wrap_plots() +#' @param axes passed to patchwork::wrap_plots() +#' @param axis_titles passed to patchwork::wrap_plots() +#' @param ... passed to patchwork::wrap_plots() #' #' @returns list of ggplot2 objects #' @export @@ -2347,6 +2350,9 @@ wrap_plot_list <- function(data, tag_levels = NULL, title = NULL, axis.font.family = NULL, + guides = "collect", + axes = "collect", + axis_titles = "collect", ...) { if (ggplot2::is_ggplot(data[[1]])) { if (length(data) > 1) { @@ -2362,9 +2368,10 @@ wrap_plot_list <- function(data, })() |> align_axes() |> patchwork::wrap_plots( - guides = "collect", - axes = "collect", - axis_titles = "collect" + guides = guides, + axes = axes, + axis_titles = axis_titles, + ... ) if (!is.null(tag_levels)) { out <- out + patchwork::plot_annotation(tag_levels = tag_levels) @@ -2383,13 +2390,17 @@ wrap_plot_list <- function(data, cli::cli_abort("Can only wrap lists of {.cls ggplot} objects") } - if (inherits(x = out, what = "patchwork")) { - out & - ggplot2::theme(axis.text = ggplot2::element_text(family = axis.font.family)) - } else { - out + - ggplot2::theme(axis.text = ggplot2::element_text(family = axis.font.family)) + if (!is.null(axis.font.family)) { + if (inherits(x = out, what = "patchwork")) { + out <- out & + ggplot2::theme(axis.text = ggplot2::element_text(family = axis.font.family)) + } else { + out <- out + + ggplot2::theme(axis.text = ggplot2::element_text(family = axis.font.family)) + } } + + out } @@ -2400,7 +2411,7 @@ wrap_plot_list <- function(data, #' @returns list of ggplot2 objects #' @export #' -align_axes <- function(...) { +align_axes <- function(..., x.axis = TRUE, y.axis = TRUE) { # 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)) { @@ -2418,7 +2429,16 @@ align_axes <- function(...) { xr <- clean_common_axis(p, "x") suppressWarnings({ - p |> purrr::map(~ .x + ggplot2::xlim(xr) + ggplot2::ylim(yr)) + purrr::map(p, \(.x){ + out <- .x + if (isTRUE(x.axis)) { + out <- out + ggplot2::xlim(xr) + } + if (isTRUE(y.axis)) { + out <- out + ggplot2::ylim(yr) + } + out + }) }) } @@ -4026,7 +4046,7 @@ simple_snake <- function(data){ #### Current file: /Users/au301842/FreesearchR/R//hosted_version.R ######## -hosted_version <- function()'v25.7.2-250722' +hosted_version <- function()'v25.8.1-250808' ######## @@ -5015,6 +5035,7 @@ ggeulerr <- function( #' D = sample(c(TRUE, FALSE, FALSE, FALSE), 50, TRUE) #' ) |> plot_euler("A", c("B", "C"), "D", seed = 4) #' mtcars |> plot_euler("vs", "am", seed = 1) +#' mtcars |> plot_euler("vs", "am", "cyl", seed = 1) plot_euler <- function(data, pri, sec, ter = NULL, seed = 2103) { set.seed(seed = seed) if (!is.null(ter)) { @@ -5029,10 +5050,9 @@ plot_euler <- function(data, pri, sec, ter = NULL, seed = 2103) { na.omit() |> plot_euler_single() }) - - # names(out) +# browser() wrap_plot_list(out,title=glue::glue("Grouped by {get_label(data,ter)}")) - # patchwork::wrap_plots(out, guides = "collect") + # patchwork::wrap_plots(out) } #' Easily plot single euler diagrams @@ -5062,8 +5082,8 @@ plot_euler_single <- function(data) { legend.position = "none", # panel.grid.major = element_blank(), # panel.grid.minor = element_blank(), - # axis.text.y = element_blank(), - # axis.title.y = element_blank(), + axis.text.y = ggplot2::element_blank(), + axis.title.y = ggplot2::element_blank(), text = ggplot2::element_text(size = 20), axis.text = ggplot2::element_blank(), # plot.title = element_blank(), @@ -5087,6 +5107,7 @@ plot_euler_single <- function(data) { #' #' @examples #' mtcars |> plot_hbars(pri = "carb", sec = "cyl") +#' mtcars |> plot_hbars(pri = "carb", sec = "cyl", ter="am") #' mtcars |> plot_hbars(pri = "carb", sec = NULL) plot_hbars <- function(data, pri, sec, ter = NULL) { out <- vertical_stacked_bars(data = data, score = pri, group = sec, strata = ter) @@ -5496,17 +5517,20 @@ plot_violin <- function(data, pri, sec, ter = NULL) { ds <- list(data) } - out <- lapply(ds, \(.ds){ - rempsyc::nice_violin( - data = .ds, - group = sec, - response = pri, - xtitle = get_label(data, var = sec), - ytitle = get_label(data, var = pri) - ) - }) + # browser() + suppressWarnings({ + out <- lapply(ds, \(.ds){ + rempsyc::nice_violin( + data = .ds, + group = sec, + response = pri, + xtitle = get_label(data, var = sec), + ytitle = get_label(data, var = pri) + ) + }) - wrap_plot_list(out,title=glue::glue("Grouped by {get_label(data,ter)}")) + wrap_plot_list(out, title = glue::glue("Grouped by {get_label(data,ter)}")) + }) # patchwork::wrap_plots(out,guides = "collect") } diff --git a/inst/apps/FreesearchR/app.R b/inst/apps/FreesearchR/app.R index 8d19c83..1334db3 100644 --- a/inst/apps/FreesearchR/app.R +++ b/inst/apps/FreesearchR/app.R @@ -49,7 +49,7 @@ library(rlang) #### Current file: /Users/au301842/FreesearchR/R//app_version.R ######## -app_version <- function()'25.7.3' +app_version <- function()'25.8.1' ######## @@ -2338,7 +2338,10 @@ line_break <- function(data, lineLength = 20, force = FALSE) { #' @param data list of ggplot2 objects #' @param tag_levels passed to patchwork::plot_annotation if given. Default is NULL #' @param title panel title -#' @param ... ignored for argument overflow +#' @param guides passed to patchwork::wrap_plots() +#' @param axes passed to patchwork::wrap_plots() +#' @param axis_titles passed to patchwork::wrap_plots() +#' @param ... passed to patchwork::wrap_plots() #' #' @returns list of ggplot2 objects #' @export @@ -2347,6 +2350,9 @@ wrap_plot_list <- function(data, tag_levels = NULL, title = NULL, axis.font.family = NULL, + guides = "collect", + axes = "collect", + axis_titles = "collect", ...) { if (ggplot2::is_ggplot(data[[1]])) { if (length(data) > 1) { @@ -2362,9 +2368,9 @@ wrap_plot_list <- function(data, })() |> align_axes() |> patchwork::wrap_plots( - guides = "collect", - axes = "collect", - axis_titles = "collect", + guides = guides, + axes = axes, + axis_titles = axis_titles, ... ) if (!is.null(tag_levels)) { @@ -2384,13 +2390,17 @@ wrap_plot_list <- function(data, cli::cli_abort("Can only wrap lists of {.cls ggplot} objects") } - if (inherits(x = out, what = "patchwork")) { - out & - ggplot2::theme(axis.text = ggplot2::element_text(family = axis.font.family)) - } else { - out + - ggplot2::theme(axis.text = ggplot2::element_text(family = axis.font.family)) + if (!is.null(axis.font.family)) { + if (inherits(x = out, what = "patchwork")) { + out <- out & + ggplot2::theme(axis.text = ggplot2::element_text(family = axis.font.family)) + } else { + out <- out + + ggplot2::theme(axis.text = ggplot2::element_text(family = axis.font.family)) + } } + + out } @@ -2401,7 +2411,7 @@ wrap_plot_list <- function(data, #' @returns list of ggplot2 objects #' @export #' -align_axes <- function(...,x.axis=TRUE,y.axis=TRUE) { +align_axes <- function(..., x.axis = TRUE, y.axis = TRUE) { # 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)) { @@ -2419,12 +2429,12 @@ align_axes <- function(...,x.axis=TRUE,y.axis=TRUE) { xr <- clean_common_axis(p, "x") suppressWarnings({ - purrr::map(p, \(.x){ + purrr::map(p, \(.x){ out <- .x - if (isTRUE(x.axis)){ + if (isTRUE(x.axis)) { out <- out + ggplot2::xlim(xr) } - if (isTRUE(y.axis)){ + if (isTRUE(y.axis)) { out <- out + ggplot2::ylim(yr) } out @@ -4036,7 +4046,7 @@ simple_snake <- function(data){ #### Current file: /Users/au301842/FreesearchR/R//hosted_version.R ######## -hosted_version <- function()'v25.7.3-250808' +hosted_version <- function()'v25.8.1-250808' ######## @@ -5025,6 +5035,7 @@ ggeulerr <- function( #' D = sample(c(TRUE, FALSE, FALSE, FALSE), 50, TRUE) #' ) |> plot_euler("A", c("B", "C"), "D", seed = 4) #' mtcars |> plot_euler("vs", "am", seed = 1) +#' mtcars |> plot_euler("vs", "am", "cyl", seed = 1) plot_euler <- function(data, pri, sec, ter = NULL, seed = 2103) { set.seed(seed = seed) if (!is.null(ter)) { @@ -5040,9 +5051,8 @@ plot_euler <- function(data, pri, sec, ter = NULL, seed = 2103) { plot_euler_single() }) # browser() - # names(out) wrap_plot_list(out,title=glue::glue("Grouped by {get_label(data,ter)}")) - # patchwork::wrap_plots(out, guides = "collect") + # patchwork::wrap_plots(out) } #' Easily plot single euler diagrams @@ -5072,8 +5082,8 @@ plot_euler_single <- function(data) { legend.position = "none", # panel.grid.major = element_blank(), # panel.grid.minor = element_blank(), - # axis.text.y = element_blank(), - # axis.title.y = element_blank(), + axis.text.y = ggplot2::element_blank(), + axis.title.y = ggplot2::element_blank(), text = ggplot2::element_text(size = 20), axis.text = ggplot2::element_blank(), # plot.title = element_blank(),