diff --git a/CITATION.cff b/CITATION.cff index 1bbe1103..be088f29 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -8,7 +8,7 @@ message: 'To cite package "FreesearchR" in publications use:' type: software license: AGPL-3.0-or-later title: 'FreesearchR: Easy data analysis for clinicians' -version: 25.10.2 +version: 25.10.1 doi: 10.5281/zenodo.14527429 identifiers: - type: url diff --git a/DESCRIPTION b/DESCRIPTION index f593083a..9eeddb70 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: FreesearchR Title: Easy data analysis for clinicians -Version: 25.10.2 +Version: 25.10.1 Authors@R: c( person("Andreas Gammelgaard", "Damsbo",email="agdamsbo@clin.au.dk", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-7559-1154")), diff --git a/NAMESPACE b/NAMESPACE index b4592f0b..03405295 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -78,7 +78,6 @@ export(is_identical_to_previous) export(is_valid_redcap_url) export(is_valid_token) export(launch_FreesearchR) -export(limit_data_size) export(limit_log) export(line_break) export(list_allowed_operations) diff --git a/NEWS.md b/NEWS.md index 379064b0..893a5bb9 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,14 +1,3 @@ -# FreesearchR 25.10.2 - -*NEW* Improvements to translations with more strings having been translated. - -*NEW* More detailed label for the stacked horizontal bar plot. - -*NEW* Better .rds import that will import the first element as data.frame if a list-type element is supplied. - -*NEW* A limit to the imported dataset size was added to ensure performance on hosted version. The data is limited to 100.000 cells by dropping rows to fit. The vast majority of users will never experience this capping, but adds a layer of security and stability to the hosting framework. - - # FreesearchR 25.10.1 *NEW* Improvements to translations with more strings having been translated. diff --git a/R/app_version.R b/R/app_version.R index 6dde03ee..d394d1ea 100644 --- a/R/app_version.R +++ b/R/app_version.R @@ -1 +1 @@ -app_version <- function()'25.10.2' +app_version <- function()'25.10.1' diff --git a/R/hosted_version.R b/R/hosted_version.R index e141329f..f18af72a 100644 --- a/R/hosted_version.R +++ b/R/hosted_version.R @@ -1 +1 @@ -hosted_version <- function()'v25.10.2-251007' +hosted_version <- function()'v25.10.1-251002' diff --git a/R/import-file-ext.R b/R/import-file-ext.R index f9b0c9d3..e0f00b63 100644 --- a/R/import-file-ext.R +++ b/R/import-file-ext.R @@ -144,7 +144,7 @@ import_file_ui <- function(id, shiny::tags$b(i18n$t("No file selected.")), # shiny::textOutput(ns("trans_format_text")), # This is the easiest solution, though not gramatically perfect - i18n$t("You can choose between these file types:"), paste(file_extensions, collapse = ", "), + i18n$t("You can choose between these file types:"), paste(file_extensions,collapse=', '), # sprintf("You can import %s files", paste(file_extensions, collapse = ", ")), dismissible = TRUE ) @@ -177,8 +177,7 @@ import_file_server <- function(id, show_data_in = c("popup", "modal"), trigger_return = c("button", "change"), return_class = c("data.frame", "data.table", "tbl_df", "raw"), - reset = reactive(NULL), - limit=100000) { + reset = reactive(NULL)) { read_fns <- list( ods = "import_ods", dta = "import_dta", @@ -297,10 +296,6 @@ import_file_server <- function(id, extra = if (isTRUE(input$preview_data)) i18n$t("First five rows are shown below:") ) ) - - ## As a protective measure, the dataset size is capped at cell limit - imported <- limit_data_size(imported,limit = limit) - temporary_rv$status <- "success" temporary_rv$data <- imported temporary_rv$name <- input$file$name @@ -509,20 +504,9 @@ import_dta <- function(file) { #' @export #' import_rds <- function(file) { - out <- readr::read_rds( + readr::read_rds( file = file ) - - if (is.data.frame(out)) { - out - } else if (is.vector(out) && !is.null(dim(out))) { - ## If the data is a simple vector (simple test), it is coerced to a data.frame - as.data.frame(out) - } else { - ## If not a data.frame and not a vector (probably a list of elements) - ## Flattened to ensure no nested lists - as.data.frame(purrr::list_flatten(out)[[1]]) - } } #' @title Create a select input control with icon(s) @@ -626,39 +610,3 @@ import_file_demo_app <- function() { } shiny::shinyApp(ui, server) } - - -#' Limit the allowed data set size by number of cells -#' -#' @description -#' This function may act to guard a hosted app against very large data sets in -#' addition to the file size limitations. -#' The function will limit the data set by dropping rows. -#' -#' -#' @param data data.frame -#' @param limit cell number limit. Default is NULL. -#' -#' @returns data.frame -#' @export -#' -#' @examples -#' prod(dim(mtcars)) -#' limit_data_size(mtcars) -#' limit_data_size(mtcars,100) -limit_data_size <- function(data, limit = NULL) { - ## Add security to only allow dataset of 100.000 cells - ## Ideally this should only go for the hosted version - - if (is.null(limit)){ - return(data) - } - - data_dim <- dim(data) - - if (prod(data_dim) > limit) { - head(data, floor(limit / data_dim[2])) - } else { - data - } -} diff --git a/R/plot_hbar.R b/R/plot_hbar.R index 5e71d745..5e13a8e6 100644 --- a/R/plot_hbar.R +++ b/R/plot_hbar.R @@ -34,8 +34,7 @@ vertical_stacked_bars <- function(data, t.size = 10, l.color = "black", l.size = .5, - draw.lines = TRUE, - label.str="{n}\n{round(100 * p,0)}%") { + draw.lines = TRUE) { if (is.null(group)) { df.table <- data[c(score, group, strata)] |> dplyr::mutate("All" = 1) |> @@ -80,8 +79,7 @@ vertical_stacked_bars <- function(data, y = p_prev + 0.49 * p, color = as.numeric(score) > contrast_cut, # label = paste0(sprintf("%2.0f", 100 * p),"%"), - # label = sprintf("%2.0f", 100 * p) - label = glue::glue(label.str) + label = sprintf("%2.0f", 100 * p) ) ) + ggplot2::labs(fill = score_label) + diff --git a/R/sysdata.rda b/R/sysdata.rda index 5b25ea88..799e5684 100644 Binary files a/R/sysdata.rda and b/R/sysdata.rda differ diff --git a/R/ui_elements.R b/R/ui_elements.R index cac23ac3..4a5d5f3a 100644 --- a/R/ui_elements.R +++ b/R/ui_elements.R @@ -376,7 +376,7 @@ ui_elements <- function(selection) { "Yes" = "yes" ) ), - shiny::helpText(i18n$t("Option to perform statistical comparisons between strata in baseline table.")) + shiny::helpText("Option to perform statistical comparisons between strata in baseline table.") ), shiny::br(), shiny::br(), @@ -386,8 +386,7 @@ ui_elements <- function(selection) { width = "100%", icon = shiny::icon("calculator"), disabled = TRUE - ), - shiny::helpText(i18n$t("Press 'Evaluate' to create the comparison table.")) + ) ) ) ), diff --git a/SESSION.md b/SESSION.md index c939f851..75e5d4f4 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-10-07 | +|date |2025-10-02 | |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.10.2.251007 | +|FreesearchR |25.10.1.251002 | -------------------------------------------------------------------------------- @@ -26,15 +26,13 @@ |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) | |bit |4.6.0 |2025-03-06 |CRAN (R 4.4.1) | |bit64 |4.6.0-1 |2025-01-16 |CRAN (R 4.4.1) | |bitops |1.0-9 |2024-10-03 |CRAN (R 4.4.1) | -|boot |1.3-31 |2024-08-28 |RSPM (R 4.4.0) | +|boot |1.3-31 |2024-08-28 |CRAN (R 4.4.1) | |brio |1.1.5 |2024-04-24 |CRAN (R 4.4.1) | |broom |1.0.9 |2025-07-28 |CRAN (R 4.4.1) | |broom.helpers |1.21.0 |2025-04-24 |CRAN (R 4.4.1) | @@ -47,7 +45,7 @@ |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 |RSPM (R 4.4.0) | +|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) | |cli |3.6.5 |2025-04-23 |CRAN (R 4.4.1) | @@ -56,7 +54,7 @@ |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) | -|curl |6.4.0 |2025-06-22 |RSPM (R 4.4.0) | +|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 +63,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) | @@ -76,7 +73,7 @@ |esquisse |2.1.0 |2025-02-21 |CRAN (R 4.4.1) | |estimability |1.5.1 |2024-05-12 |CRAN (R 4.4.1) | |eulerr |7.0.2 |2024-03-28 |CRAN (R 4.4.0) | -|evaluate |1.0.4 |2025-06-18 |RSPM (R 4.4.0) | +|evaluate |1.0.4 |2025-06-18 |CRAN (R 4.4.1) | |farver |2.1.2 |2024-05-13 |CRAN (R 4.4.1) | |fastmap |1.2.0 |2024-05-15 |CRAN (R 4.4.1) | |flextable |0.9.9 |2025-05-31 |CRAN (R 4.4.1) | @@ -84,11 +81,11 @@ |fontBitstreamVera |0.1.1 |2017-02-01 |CRAN (R 4.4.1) | |fontLiberation |0.1.0 |2016-10-15 |CRAN (R 4.4.1) | |fontquiver |0.2.1 |2017-02-01 |CRAN (R 4.4.0) | -|forcats |1.0.0 |2023-01-29 |RSPM (R 4.4.0) | +|forcats |1.0.0 |2023-01-29 |CRAN (R 4.4.0) | |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.10.2 |NA |NA | +|FreesearchR |25.10.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) | @@ -121,16 +118,16 @@ |keyring |1.4.1 |2025-06-15 |CRAN (R 4.4.1) | |knitr |1.50 |2025-03-16 |CRAN (R 4.4.1) | |labeling |0.4.3 |2023-08-29 |CRAN (R 4.4.1) | -|later |1.4.2 |2025-04-08 |RSPM (R 4.4.0) | +|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 |RSPM (R 4.4.0) | +|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 |RSPM (R 4.4.0) | +|Matrix |1.7-3 |2025-03-11 |CRAN (R 4.4.1) | |memoise |2.0.1 |2021-11-26 |CRAN (R 4.4.0) | |mime |0.13 |2025-03-17 |CRAN (R 4.4.1) | |miniUI |0.1.2 |2025-04-17 |CRAN (R 4.4.1) | @@ -144,18 +141,18 @@ |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.18 |2025-07-29 |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 |RSPM (R 4.4.0) | +|patchwork |1.3.1 |2025-06-21 |CRAN (R 4.4.1) | |pbmcapply |1.5.1 |2022-04-28 |CRAN (R 4.4.1) | |performance |0.15.0 |2025-07-10 |CRAN (R 4.4.1) | |phosphoricons |0.2.1 |2024-04-08 |CRAN (R 4.4.0) | -|pillar |1.11.0 |2025-07-04 |RSPM (R 4.4.0) | +|pillar |1.11.0 |2025-07-04 |CRAN (R 4.4.1) | |pkgbuild |1.4.8 |2025-05-26 |CRAN (R 4.4.1) | |pkgconfig |2.0.3 |2019-09-22 |CRAN (R 4.4.1) | -|pkgload |1.4.0 |2024-06-28 |RSPM (R 4.4.0) | +|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) | @@ -166,11 +163,12 @@ |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.5.0 |2025-07-28 |RSPM (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 |RSPM (R 4.4.0) | +|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) | @@ -193,9 +191,9 @@ |rlang |1.1.6 |2025-04-11 |CRAN (R 4.4.1) | |rmarkdown |2.29 |2024-11-04 |CRAN (R 4.4.1) | |robustbase |0.99-4-1 |2024-09-27 |CRAN (R 4.4.1) | -|roxygen2 |7.3.2 |2024-06-28 |RSPM (R 4.4.0) | +|roxygen2 |7.3.2 |2024-06-28 |CRAN (R 4.4.0) | |rpart |4.1.24 |2025-01-07 |CRAN (R 4.4.1) | -|rprojroot |2.1.0 |2025-07-12 |RSPM (R 4.4.0) | +|rprojroot |2.1.0 |2025-07-12 |CRAN (R 4.4.1) | |rsconnect |1.5.0 |2025-06-26 |CRAN (R 4.4.1) | |rstudioapi |0.17.1 |2024-10-22 |CRAN (R 4.4.1) | |sass |0.4.10 |2025-04-11 |CRAN (R 4.4.1) | @@ -204,17 +202,17 @@ |sessioninfo |1.2.3 |2025-02-05 |CRAN (R 4.4.1) | |shiny |1.11.1 |2025-07-03 |CRAN (R 4.4.1) | |shiny.i18n |0.3.0 |2023-01-16 |CRAN (R 4.4.0) | -|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 |RSPM (R 4.4.0) | +|stringr |1.5.1 |2023-11-14 |CRAN (R 4.4.0) | |stRoke |25.9.2 |2025-09-30 |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 |RSPM (R 4.4.0) | +|textshaping |1.0.1 |2025-05-01 |CRAN (R 4.4.1) | |thematic |0.1.7 |2025-06-19 |CRAN (R 4.4.1) | |tibble |3.3.0 |2025-06-08 |CRAN (R 4.4.1) | |tidyr |1.3.1 |2024-01-24 |CRAN (R 4.4.1) | @@ -225,7 +223,7 @@ |twosamples |2.0.1 |2023-06-23 |CRAN (R 4.4.1) | |tzdb |0.5.0 |2025-03-15 |CRAN (R 4.4.1) | |urlchecker |1.0.1 |2021-11-30 |CRAN (R 4.4.1) | -|usethis |3.1.0 |2024-11-26 |RSPM (R 4.4.0) | +|usethis |3.1.0 |2024-11-26 |CRAN (R 4.4.1) | |utf8 |1.2.6 |2025-06-08 |CRAN (R 4.4.1) | |uuid |1.2-1 |2024-07-29 |CRAN (R 4.4.1) | |V8 |6.0.6 |2025-08-18 |CRAN (R 4.4.1) | @@ -233,9 +231,8 @@ |vroom |1.6.5 |2023-12-05 |CRAN (R 4.4.0) | |withr |3.0.2 |2024-10-28 |CRAN (R 4.4.1) | |writexl |1.5.4 |2025-04-15 |CRAN (R 4.4.1) | -|xfun |0.52 |2025-04-02 |RSPM (R 4.4.0) | -|xml2 |1.3.8 |2025-03-14 |RSPM (R 4.4.0) | +|xfun |0.52 |2025-04-02 |CRAN (R 4.4.1) | +|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 5c5ee209..828f5997 100644 --- a/app_docker/app.R +++ b/app_docker/app.R @@ -1,7 +1,7 @@ ######## -#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmprKaNhO/file2c9540d9ead9.R +#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpWiu9wh/file1e9944acd364.R ######## i18n_path <- here::here("translations") @@ -62,7 +62,7 @@ i18n$set_translation_language("en") #### Current file: /Users/au301842/FreesearchR/R//app_version.R ######## -app_version <- function()'25.10.2' +app_version <- function()'25.10.1' ######## @@ -4035,7 +4035,7 @@ data_types <- function() { #### Current file: /Users/au301842/FreesearchR/R//hosted_version.R ######## -hosted_version <- function()'v25.10.2-251007' +hosted_version <- function()'v25.10.1-251002' ######## @@ -4567,7 +4567,7 @@ import_file_ui <- function(id, shiny::tags$b(i18n$t("No file selected.")), # shiny::textOutput(ns("trans_format_text")), # This is the easiest solution, though not gramatically perfect - i18n$t("You can choose between these file types:"), paste(file_extensions, collapse = ", "), + i18n$t("You can choose between these file types:"), paste(file_extensions,collapse=', '), # sprintf("You can import %s files", paste(file_extensions, collapse = ", ")), dismissible = TRUE ) @@ -4600,8 +4600,7 @@ import_file_server <- function(id, show_data_in = c("popup", "modal"), trigger_return = c("button", "change"), return_class = c("data.frame", "data.table", "tbl_df", "raw"), - reset = reactive(NULL), - limit=100000) { + reset = reactive(NULL)) { read_fns <- list( ods = "import_ods", dta = "import_dta", @@ -4720,10 +4719,6 @@ import_file_server <- function(id, extra = if (isTRUE(input$preview_data)) i18n$t("First five rows are shown below:") ) ) - - ## As a protective measure, the dataset size is capped at cell limit - imported <- limit_data_size(imported,limit = limit) - temporary_rv$status <- "success" temporary_rv$data <- imported temporary_rv$name <- input$file$name @@ -4932,20 +4927,9 @@ import_dta <- function(file) { #' @export #' import_rds <- function(file) { - out <- readr::read_rds( + readr::read_rds( file = file ) - - if (is.data.frame(out)) { - out - } else if (is.vector(out) && !is.null(dim(out))) { - ## If the data is a simple vector (simple test), it is coerced to a data.frame - as.data.frame(out) - } else { - ## If not a data.frame and not a vector (probably a list of elements) - ## Flattened to ensure no nested lists - as.data.frame(purrr::list_flatten(out)[[1]]) - } } #' @title Create a select input control with icon(s) @@ -5051,42 +5035,6 @@ import_file_demo_app <- function() { } -#' Limit the allowed data set size by number of cells -#' -#' @description -#' This function may act to guard a hosted app against very large data sets in -#' addition to the file size limitations. -#' The function will limit the data set by dropping rows. -#' -#' -#' @param data data.frame -#' @param limit cell number limit. Default is NULL. -#' -#' @returns data.frame -#' @export -#' -#' @examples -#' prod(dim(mtcars)) -#' limit_data_size(mtcars) -#' limit_data_size(mtcars,100) -limit_data_size <- function(data, limit = NULL) { - ## Add security to only allow dataset of 100.000 cells - ## Ideally this should only go for the hosted version - - if (is.null(limit)){ - return(data) - } - - data_dim <- dim(data) - - if (prod(data_dim) > limit) { - head(data, floor(limit / data_dim[2])) - } else { - data - } -} - - ######## #### Current file: /Users/au301842/FreesearchR/R//launch_FreesearchR.R ######## @@ -5572,8 +5520,7 @@ vertical_stacked_bars <- function(data, t.size = 10, l.color = "black", l.size = .5, - draw.lines = TRUE, - label.str="{n}\n{round(100 * p,0)}%") { + draw.lines = TRUE) { if (is.null(group)) { df.table <- data[c(score, group, strata)] |> dplyr::mutate("All" = 1) |> @@ -5618,8 +5565,7 @@ vertical_stacked_bars <- function(data, y = p_prev + 0.49 * p, color = as.numeric(score) > contrast_cut, # label = paste0(sprintf("%2.0f", 100 * p),"%"), - # label = sprintf("%2.0f", 100 * p) - label = glue::glue(label.str) + label = sprintf("%2.0f", 100 * p) ) ) + ggplot2::labs(fill = score_label) + @@ -9073,7 +9019,7 @@ ui_elements <- function(selection) { "Yes" = "yes" ) ), - shiny::helpText(i18n$t("Option to perform statistical comparisons between strata in baseline table.")) + shiny::helpText("Option to perform statistical comparisons between strata in baseline table.") ), shiny::br(), shiny::br(), @@ -9083,8 +9029,7 @@ ui_elements <- function(selection) { width = "100%", icon = shiny::icon("calculator"), disabled = TRUE - ), - shiny::helpText(i18n$t("Press 'Evaluate' to create the comparison table.")) + ) ) ) ), @@ -11482,9 +11427,9 @@ server <- function(input, output, session) { files.to.keep <- list.files("www/") ## This works in a minimal working example, but not here. Will investigate. - # shinyjs::runjs("var language = window.navigator.userLanguage || window.navigator.language; - # var shortLang = language.split('-')[0]; - # Shiny.onInputChange('browser_lang', shortLang);") +# shinyjs::runjs("var language = window.navigator.userLanguage || window.navigator.language; +# var shortLang = language.split('-')[0]; +# Shiny.onInputChange('browser_lang', shortLang);") load_data() @@ -11618,7 +11563,6 @@ server <- function(input, output, session) { output$intro_text <- renderUI(includeHTML(i18n$t("www/intro.html"))) }) - ## This is not working but kept to try to solve if deemed necessary shiny::observe( output$footer_text_div <- renderUI({ shiny::tags$footer( @@ -11685,9 +11629,7 @@ server <- function(input, output, session) { id = "file_import", show_data_in = "popup", trigger_return = "change", - return_class = "data.frame", - ## Added data.frame size limit (number of cells), rows are dropped to fit - limit = 100000 + return_class = "data.frame" ) shiny::observeEvent(data_file$data(), { @@ -11735,7 +11677,7 @@ server <- function(input, output, session) { modal_visual_summary( id = "initial_summary", footer = NULL, - size = "xl", title = i18n$t("Data classes and missing observations") + size = "xl",title = i18n$t("Data classes and missing observations") ) }, error = function(err) { @@ -12333,19 +12275,6 @@ server <- function(input, output, session) { data_description(rv$list$data, data_text = "The dataset without text variables") }) - ## Only allow evaluation if the dataset has fewer then 50 variables - ## - - # shiny::observeEvent( - # list( - # rv$list$data - # ), - # { - # shiny::req(rv$list$data) - # - # }) - - shiny::observeEvent( list( input$act_eval @@ -12360,25 +12289,9 @@ server <- function(input, output, session) { add.overall = TRUE ) - - # Attempt to introduce error on analysing too large dataset - # tryCatch( - # { - # if (ncol(rv$list$data) > 10) { - # n_col <- ncol(rv$list$data) - # # stop(glue::glue(i18n$t("The data includes {n_col} variables. Please limit to 100."))) - # print("Please limit to 100.") - # } else { - shiny::withProgress(message = "Creating the table. Hold on for a moment..", { - rv$list$table1 <- rlang::exec(create_baseline, !!!append_list(rv$list$data, parameters, "data")) - }) - # } - # }, - # error = function(err) { - # showNotification(err, type = "err") - # } - # ) - + shiny::withProgress(message = "Creating the table. Hold on for a moment..", { + rv$list$table1 <- rlang::exec(create_baseline, !!!append_list(rv$list$data, parameters, "data")) + }) rv$code$table1 <- glue::glue("FreesearchR::create_baseline(df,{list2str(parameters)})") } diff --git a/app_docker/renv.lock b/app_docker/renv.lock index 548bff24..49bb63e6 100644 --- a/app_docker/renv.lock +++ b/app_docker/renv.lock @@ -1201,8 +1201,7 @@ "License": "Unlimited", "NeedsCompilation": "no", "Author": "Angelo Canty [aut] (author of original code for S), Brian Ripley [aut, trl] (conversion to R, maintainer 1999--2022, author of parallel support), Alessandra R. Brazzale [ctb, cre] (minor bug fixes)", - "Repository": "RSPM", - "Encoding": "UTF-8" + "Repository": "CRAN" }, "brio": { "Package": "brio", diff --git a/app_docker/translations/translation_da.csv b/app_docker/translations/translation_da.csv index 2d9b39b2..13ab3733 100644 --- a/app_docker/translations/translation_da.csv +++ b/app_docker/translations/translation_da.csv @@ -244,6 +244,3 @@ "Select checks to plot","Select checks to plot" "Multivariable regression model checks","Multivariable regression model checks" "Grouped by {get_label(data,ter)}","Grouped by {get_label(data,ter)}" -"Option to perform statistical comparisons between strata in baseline table.","Option to perform statistical comparisons between strata in baseline table." -"Press 'Evaluate' to create the comparison table.","Press 'Evaluate' to create the comparison table." -"The data includes {n_col} variables. Please limit to 100.","The data includes {n_col} variables. Please limit to 100." diff --git a/app_docker/translations/translation_sw.csv b/app_docker/translations/translation_sw.csv index aa1a4716..42613fca 100644 --- a/app_docker/translations/translation_sw.csv +++ b/app_docker/translations/translation_sw.csv @@ -244,6 +244,3 @@ "Select checks to plot","Select checks to plot" "Multivariable regression model checks","Multivariable regression model checks" "Grouped by {get_label(data,ter)}","Grouped by {get_label(data,ter)}" -"Option to perform statistical comparisons between strata in baseline table.","Option to perform statistical comparisons between strata in baseline table." -"Press 'Evaluate' to create the comparison table.","Press 'Evaluate' to create the comparison table." -"The data includes {n_col} variables. Please limit to 100.","The data includes {n_col} variables. Please limit to 100." diff --git a/app_docker/www/intro_da.html b/app_docker/www/intro_da.html index e372d960..5df8d8b3 100644 --- a/app_docker/www/intro_da.html +++ b/app_docker/www/intro_da.html @@ -8,18 +8,15 @@ værktøj til databehandling og -analyse. Har du brug for mere avancerede værktøjer, så kan du starte FreesearchR og senere selv hente R og RStudio eller lignende.

-

Vi arbejder hårdt på at introducere en komplet oversættelse til -dansk. Hvis du har lyst til at bidrage, er du velkommen til at kontakte -os på info@freesearchr.org.

Herunder kan du helt kort se, hvad du kan bruge FreesearchR til:

    -
  1. Importér data fra regneark/fil på din enhed, -direkte fra en REDCap-server, afprøv med -eksempel-data eller tilgå data direkte hvis du -afvikler i R lokalt

  2. -
  3. Forbered data til analys ved at filtrere, ændre -variabler eller opret helt nye variabler

  4. +
  5. Import data from a spreadsheet/file on your +machine, directly from a REDCap server, try +it with sample data or access data directly if run in R +locally

  6. +
  7. Prepare data for analysis by filtering data, +modifying variables or create new variables

  8. Evaluate data using descriptive analyses methods and inspect cross-correlations as well as missing observations

  9. Visualise data by creating simple, clean plots for diff --git a/app_docker/www/intro_da.md b/app_docker/www/intro_da.md index 4a0afe5d..d7ccf59b 100644 --- a/app_docker/www/intro_da.md +++ b/app_docker/www/intro_da.md @@ -6,13 +6,11 @@ output: html_fragment Dette er ***FreesearchR***-værktøjet, et gratis værktøj til databehandling og -analyse. Har du brug for mere avancerede værktøjer, så kan du starte ***FreesearchR*** og senere selv hente *R* og *RStudio* eller lignende. -Vi arbejder hårdt på at introducere en komplet oversættelse til dansk. Hvis du har lyst til at bidrage, er du velkommen til at kontakte os på [info@freesearchr.org](mailto:info@freesearchr.org). - Herunder kan du helt kort se, hvad du kan bruge ***FreesearchR*** til: -1. **Importér data** fra regneark/fil på din enhed, direkte fra en [REDCap-server](https://projectredcap.org/ "Læs mere of REDCap-værktøjet"), afprøv med eksempel-data eller tilgå data direkte [hvis du afvikler i R lokalt](https://agdamsbo.github.io/FreesearchR//#run-locally-on-your-own-machine "Læs mere om at køre FreesearchR på din egen maskine") +1. **Import data** from a spreadsheet/file on your machine, directly from a [REDCap](https://projectredcap.org/ "Read more on the data capture tool REDCap") server, try it with sample data or access data directly [if run in R locally](https://agdamsbo.github.io/FreesearchR//#run-locally-on-your-own-machine "Read about running FreesearchR on your local machine") -2. **Forbered** data til analys ved at filtrere, ændre variabler eller opret helt nye variabler +2. **Prepare** data for analysis by filtering data, modifying variables or create new variables 3. **Evaluate data** using descriptive analyses methods and inspect cross-correlations as well as [missing observations](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Read more about missing data") diff --git a/app_docker/www/intro_sw.html b/app_docker/www/intro_sw.html index 40da6fd4..39ee4dc9 100644 --- a/app_docker/www/intro_sw.html +++ b/app_docker/www/intro_sw.html @@ -3,14 +3,12 @@

    Karibu

    -

    Hii ni FreesearchR zana ya kuchanganua -data, zana isiyolipishwa ya kutathmini na kuchanganua data msingi. Iwapo -unahitaji zana za kina zaidi, anza na -FreesearchR na basi pengine utakuwa bora -kutumia R au sawa moja kwa moja.

    -

    Tunajitahidi kutambulisha tafsiri kamili kwa Kiswahili. Ikiwa -ungependa kuchangia, tafadhali wasiliana na info@freesearchr.org.

    -

    Na FreesearchR unaweza:

    +

    This is the FreesearchR data analysis tool, +a free tool for basic data evaluation and analysis. If you need more +advanced tools, start with FreesearchR and +then you’ll probably be better off using R or similar +directly.

    +

    With this tool you can:

    1. Import data from a spreadsheet/file on your machine, directly from a REDCap server, try diff --git a/app_docker/www/intro_sw.md b/app_docker/www/intro_sw.md index 06a8bea3..37c7f09a 100644 --- a/app_docker/www/intro_sw.md +++ b/app_docker/www/intro_sw.md @@ -4,11 +4,9 @@ output: html_fragment # Karibu -Hii ni ***FreesearchR*** zana ya kuchanganua data, zana isiyolipishwa ya kutathmini na kuchanganua data msingi. Iwapo unahitaji zana za kina zaidi, anza na ***FreesearchR*** na basi pengine utakuwa bora kutumia *R* au sawa moja kwa moja. +This is the ***FreesearchR*** data analysis tool, a free tool for basic data evaluation and analysis. If you need more advanced tools, start with ***FreesearchR*** and then you'll probably be better off using *R* or similar directly. -Tunajitahidi kutambulisha tafsiri kamili kwa Kiswahili. Ikiwa ungependa kuchangia, tafadhali wasiliana na [info@freesearchr.org](mailto:info@freesearchr.org). - -Na ***FreesearchR*** unaweza: +With this tool you can: 1. **Import data** from a spreadsheet/file on your machine, directly from a [REDCap](https://projectredcap.org/ "Read more on the data capture tool REDCap") server, try it with sample data or access data directly [if run in R locally](https://agdamsbo.github.io/FreesearchR//#run-locally-on-your-own-machine "Read about running FreesearchR on your local machine") diff --git a/inst/apps/FreesearchR/app.R b/inst/apps/FreesearchR/app.R index a5b7d24e..2de02a7a 100644 --- a/inst/apps/FreesearchR/app.R +++ b/inst/apps/FreesearchR/app.R @@ -1,7 +1,7 @@ ######## -#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmprKaNhO/file2c953618a132.R +#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpWiu9wh/file1e99785ae783.R ######## i18n_path <- system.file("translations", package = "FreesearchR") @@ -62,7 +62,7 @@ i18n$set_translation_language("en") #### Current file: /Users/au301842/FreesearchR/R//app_version.R ######## -app_version <- function()'25.10.2' +app_version <- function()'25.10.1' ######## @@ -4035,7 +4035,7 @@ data_types <- function() { #### Current file: /Users/au301842/FreesearchR/R//hosted_version.R ######## -hosted_version <- function()'v25.10.2-251007' +hosted_version <- function()'v25.10.1-251002' ######## @@ -4567,7 +4567,7 @@ import_file_ui <- function(id, shiny::tags$b(i18n$t("No file selected.")), # shiny::textOutput(ns("trans_format_text")), # This is the easiest solution, though not gramatically perfect - i18n$t("You can choose between these file types:"), paste(file_extensions, collapse = ", "), + i18n$t("You can choose between these file types:"), paste(file_extensions,collapse=', '), # sprintf("You can import %s files", paste(file_extensions, collapse = ", ")), dismissible = TRUE ) @@ -4600,8 +4600,7 @@ import_file_server <- function(id, show_data_in = c("popup", "modal"), trigger_return = c("button", "change"), return_class = c("data.frame", "data.table", "tbl_df", "raw"), - reset = reactive(NULL), - limit=100000) { + reset = reactive(NULL)) { read_fns <- list( ods = "import_ods", dta = "import_dta", @@ -4720,10 +4719,6 @@ import_file_server <- function(id, extra = if (isTRUE(input$preview_data)) i18n$t("First five rows are shown below:") ) ) - - ## As a protective measure, the dataset size is capped at cell limit - imported <- limit_data_size(imported,limit = limit) - temporary_rv$status <- "success" temporary_rv$data <- imported temporary_rv$name <- input$file$name @@ -4932,20 +4927,9 @@ import_dta <- function(file) { #' @export #' import_rds <- function(file) { - out <- readr::read_rds( + readr::read_rds( file = file ) - - if (is.data.frame(out)) { - out - } else if (is.vector(out) && !is.null(dim(out))) { - ## If the data is a simple vector (simple test), it is coerced to a data.frame - as.data.frame(out) - } else { - ## If not a data.frame and not a vector (probably a list of elements) - ## Flattened to ensure no nested lists - as.data.frame(purrr::list_flatten(out)[[1]]) - } } #' @title Create a select input control with icon(s) @@ -5051,42 +5035,6 @@ import_file_demo_app <- function() { } -#' Limit the allowed data set size by number of cells -#' -#' @description -#' This function may act to guard a hosted app against very large data sets in -#' addition to the file size limitations. -#' The function will limit the data set by dropping rows. -#' -#' -#' @param data data.frame -#' @param limit cell number limit. Default is NULL. -#' -#' @returns data.frame -#' @export -#' -#' @examples -#' prod(dim(mtcars)) -#' limit_data_size(mtcars) -#' limit_data_size(mtcars,100) -limit_data_size <- function(data, limit = NULL) { - ## Add security to only allow dataset of 100.000 cells - ## Ideally this should only go for the hosted version - - if (is.null(limit)){ - return(data) - } - - data_dim <- dim(data) - - if (prod(data_dim) > limit) { - head(data, floor(limit / data_dim[2])) - } else { - data - } -} - - ######## #### Current file: /Users/au301842/FreesearchR/R//launch_FreesearchR.R ######## @@ -5572,8 +5520,7 @@ vertical_stacked_bars <- function(data, t.size = 10, l.color = "black", l.size = .5, - draw.lines = TRUE, - label.str="{n}\n{round(100 * p,0)}%") { + draw.lines = TRUE) { if (is.null(group)) { df.table <- data[c(score, group, strata)] |> dplyr::mutate("All" = 1) |> @@ -5618,8 +5565,7 @@ vertical_stacked_bars <- function(data, y = p_prev + 0.49 * p, color = as.numeric(score) > contrast_cut, # label = paste0(sprintf("%2.0f", 100 * p),"%"), - # label = sprintf("%2.0f", 100 * p) - label = glue::glue(label.str) + label = sprintf("%2.0f", 100 * p) ) ) + ggplot2::labs(fill = score_label) + @@ -9073,7 +9019,7 @@ ui_elements <- function(selection) { "Yes" = "yes" ) ), - shiny::helpText(i18n$t("Option to perform statistical comparisons between strata in baseline table.")) + shiny::helpText("Option to perform statistical comparisons between strata in baseline table.") ), shiny::br(), shiny::br(), @@ -9083,8 +9029,7 @@ ui_elements <- function(selection) { width = "100%", icon = shiny::icon("calculator"), disabled = TRUE - ), - shiny::helpText(i18n$t("Press 'Evaluate' to create the comparison table.")) + ) ) ) ), @@ -11416,7 +11361,7 @@ ui <- bslib::page_fixed( ## Code formatting dependencies prismDependencies, prismRDependency, - # html_dependency_FreesearchR(), + html_dependency_FreesearchR(), ## Version dependent header header_include(), ## This adds the actual favicon @@ -11482,9 +11427,9 @@ server <- function(input, output, session) { files.to.keep <- list.files("www/") ## This works in a minimal working example, but not here. Will investigate. - # shinyjs::runjs("var language = window.navigator.userLanguage || window.navigator.language; - # var shortLang = language.split('-')[0]; - # Shiny.onInputChange('browser_lang', shortLang);") +# shinyjs::runjs("var language = window.navigator.userLanguage || window.navigator.language; +# var shortLang = language.split('-')[0]; +# Shiny.onInputChange('browser_lang', shortLang);") load_data() @@ -11618,7 +11563,6 @@ server <- function(input, output, session) { output$intro_text <- renderUI(includeHTML(i18n$t("www/intro.html"))) }) - ## This is not working but kept to try to solve if deemed necessary shiny::observe( output$footer_text_div <- renderUI({ shiny::tags$footer( @@ -11685,9 +11629,7 @@ server <- function(input, output, session) { id = "file_import", show_data_in = "popup", trigger_return = "change", - return_class = "data.frame", - ## Added data.frame size limit (number of cells), rows are dropped to fit - limit = 100000 + return_class = "data.frame" ) shiny::observeEvent(data_file$data(), { @@ -11735,7 +11677,7 @@ server <- function(input, output, session) { modal_visual_summary( id = "initial_summary", footer = NULL, - size = "xl", title = i18n$t("Data classes and missing observations") + size = "xl",title = i18n$t("Data classes and missing observations") ) }, error = function(err) { @@ -12333,19 +12275,6 @@ server <- function(input, output, session) { data_description(rv$list$data, data_text = "The dataset without text variables") }) - ## Only allow evaluation if the dataset has fewer then 50 variables - ## - - # shiny::observeEvent( - # list( - # rv$list$data - # ), - # { - # shiny::req(rv$list$data) - # - # }) - - shiny::observeEvent( list( input$act_eval @@ -12360,25 +12289,9 @@ server <- function(input, output, session) { add.overall = TRUE ) - - # Attempt to introduce error on analysing too large dataset - # tryCatch( - # { - # if (ncol(rv$list$data) > 10) { - # n_col <- ncol(rv$list$data) - # # stop(glue::glue(i18n$t("The data includes {n_col} variables. Please limit to 100."))) - # print("Please limit to 100.") - # } else { - shiny::withProgress(message = "Creating the table. Hold on for a moment..", { - rv$list$table1 <- rlang::exec(create_baseline, !!!append_list(rv$list$data, parameters, "data")) - }) - # } - # }, - # error = function(err) { - # showNotification(err, type = "err") - # } - # ) - + shiny::withProgress(message = "Creating the table. Hold on for a moment..", { + rv$list$table1 <- rlang::exec(create_baseline, !!!append_list(rv$list$data, parameters, "data")) + }) rv$code$table1 <- glue::glue("FreesearchR::create_baseline(df,{list2str(parameters)})") } diff --git a/inst/apps/FreesearchR/www/intro_da.html b/inst/apps/FreesearchR/www/intro_da.html index e372d960..5df8d8b3 100644 --- a/inst/apps/FreesearchR/www/intro_da.html +++ b/inst/apps/FreesearchR/www/intro_da.html @@ -8,18 +8,15 @@ værktøj til databehandling og -analyse. Har du brug for mere avancerede værktøjer, så kan du starte FreesearchR og senere selv hente R og RStudio eller lignende.

      -

      Vi arbejder hårdt på at introducere en komplet oversættelse til -dansk. Hvis du har lyst til at bidrage, er du velkommen til at kontakte -os på info@freesearchr.org.

      Herunder kan du helt kort se, hvad du kan bruge FreesearchR til:

        -
      1. Importér data fra regneark/fil på din enhed, -direkte fra en REDCap-server, afprøv med -eksempel-data eller tilgå data direkte hvis du -afvikler i R lokalt

      2. -
      3. Forbered data til analys ved at filtrere, ændre -variabler eller opret helt nye variabler

      4. +
      5. Import data from a spreadsheet/file on your +machine, directly from a REDCap server, try +it with sample data or access data directly if run in R +locally

      6. +
      7. Prepare data for analysis by filtering data, +modifying variables or create new variables

      8. Evaluate data using descriptive analyses methods and inspect cross-correlations as well as missing observations

      9. Visualise data by creating simple, clean plots for diff --git a/inst/apps/FreesearchR/www/intro_da.md b/inst/apps/FreesearchR/www/intro_da.md index 4a0afe5d..d7ccf59b 100644 --- a/inst/apps/FreesearchR/www/intro_da.md +++ b/inst/apps/FreesearchR/www/intro_da.md @@ -6,13 +6,11 @@ output: html_fragment Dette er ***FreesearchR***-værktøjet, et gratis værktøj til databehandling og -analyse. Har du brug for mere avancerede værktøjer, så kan du starte ***FreesearchR*** og senere selv hente *R* og *RStudio* eller lignende. -Vi arbejder hårdt på at introducere en komplet oversættelse til dansk. Hvis du har lyst til at bidrage, er du velkommen til at kontakte os på [info@freesearchr.org](mailto:info@freesearchr.org). - Herunder kan du helt kort se, hvad du kan bruge ***FreesearchR*** til: -1. **Importér data** fra regneark/fil på din enhed, direkte fra en [REDCap-server](https://projectredcap.org/ "Læs mere of REDCap-værktøjet"), afprøv med eksempel-data eller tilgå data direkte [hvis du afvikler i R lokalt](https://agdamsbo.github.io/FreesearchR//#run-locally-on-your-own-machine "Læs mere om at køre FreesearchR på din egen maskine") +1. **Import data** from a spreadsheet/file on your machine, directly from a [REDCap](https://projectredcap.org/ "Read more on the data capture tool REDCap") server, try it with sample data or access data directly [if run in R locally](https://agdamsbo.github.io/FreesearchR//#run-locally-on-your-own-machine "Read about running FreesearchR on your local machine") -2. **Forbered** data til analys ved at filtrere, ændre variabler eller opret helt nye variabler +2. **Prepare** data for analysis by filtering data, modifying variables or create new variables 3. **Evaluate data** using descriptive analyses methods and inspect cross-correlations as well as [missing observations](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Read more about missing data") diff --git a/inst/apps/FreesearchR/www/intro_sw.html b/inst/apps/FreesearchR/www/intro_sw.html index 40da6fd4..39ee4dc9 100644 --- a/inst/apps/FreesearchR/www/intro_sw.html +++ b/inst/apps/FreesearchR/www/intro_sw.html @@ -3,14 +3,12 @@

        Karibu

        -

        Hii ni FreesearchR zana ya kuchanganua -data, zana isiyolipishwa ya kutathmini na kuchanganua data msingi. Iwapo -unahitaji zana za kina zaidi, anza na -FreesearchR na basi pengine utakuwa bora -kutumia R au sawa moja kwa moja.

        -

        Tunajitahidi kutambulisha tafsiri kamili kwa Kiswahili. Ikiwa -ungependa kuchangia, tafadhali wasiliana na info@freesearchr.org.

        -

        Na FreesearchR unaweza:

        +

        This is the FreesearchR data analysis tool, +a free tool for basic data evaluation and analysis. If you need more +advanced tools, start with FreesearchR and +then you’ll probably be better off using R or similar +directly.

        +

        With this tool you can:

        1. Import data from a spreadsheet/file on your machine, directly from a REDCap server, try diff --git a/inst/apps/FreesearchR/www/intro_sw.md b/inst/apps/FreesearchR/www/intro_sw.md index 06a8bea3..37c7f09a 100644 --- a/inst/apps/FreesearchR/www/intro_sw.md +++ b/inst/apps/FreesearchR/www/intro_sw.md @@ -4,11 +4,9 @@ output: html_fragment # Karibu -Hii ni ***FreesearchR*** zana ya kuchanganua data, zana isiyolipishwa ya kutathmini na kuchanganua data msingi. Iwapo unahitaji zana za kina zaidi, anza na ***FreesearchR*** na basi pengine utakuwa bora kutumia *R* au sawa moja kwa moja. +This is the ***FreesearchR*** data analysis tool, a free tool for basic data evaluation and analysis. If you need more advanced tools, start with ***FreesearchR*** and then you'll probably be better off using *R* or similar directly. -Tunajitahidi kutambulisha tafsiri kamili kwa Kiswahili. Ikiwa ungependa kuchangia, tafadhali wasiliana na [info@freesearchr.org](mailto:info@freesearchr.org). - -Na ***FreesearchR*** unaweza: +With this tool you can: 1. **Import data** from a spreadsheet/file on your machine, directly from a [REDCap](https://projectredcap.org/ "Read more on the data capture tool REDCap") server, try it with sample data or access data directly [if run in R locally](https://agdamsbo.github.io/FreesearchR//#run-locally-on-your-own-machine "Read about running FreesearchR on your local machine") diff --git a/inst/translations/translation_da.csv b/inst/translations/translation_da.csv index 2d9b39b2..13ab3733 100644 --- a/inst/translations/translation_da.csv +++ b/inst/translations/translation_da.csv @@ -244,6 +244,3 @@ "Select checks to plot","Select checks to plot" "Multivariable regression model checks","Multivariable regression model checks" "Grouped by {get_label(data,ter)}","Grouped by {get_label(data,ter)}" -"Option to perform statistical comparisons between strata in baseline table.","Option to perform statistical comparisons between strata in baseline table." -"Press 'Evaluate' to create the comparison table.","Press 'Evaluate' to create the comparison table." -"The data includes {n_col} variables. Please limit to 100.","The data includes {n_col} variables. Please limit to 100." diff --git a/inst/translations/translation_sw.csv b/inst/translations/translation_sw.csv index aa1a4716..42613fca 100644 --- a/inst/translations/translation_sw.csv +++ b/inst/translations/translation_sw.csv @@ -244,6 +244,3 @@ "Select checks to plot","Select checks to plot" "Multivariable regression model checks","Multivariable regression model checks" "Grouped by {get_label(data,ter)}","Grouped by {get_label(data,ter)}" -"Option to perform statistical comparisons between strata in baseline table.","Option to perform statistical comparisons between strata in baseline table." -"Press 'Evaluate' to create the comparison table.","Press 'Evaluate' to create the comparison table." -"The data includes {n_col} variables. Please limit to 100.","The data includes {n_col} variables. Please limit to 100." diff --git a/man/import-file.Rd b/man/import-file.Rd index 0f092d52..233800e2 100644 --- a/man/import-file.Rd +++ b/man/import-file.Rd @@ -21,8 +21,7 @@ import_file_server( show_data_in = c("popup", "modal"), trigger_return = c("button", "change"), return_class = c("data.frame", "data.table", "tbl_df", "raw"), - reset = reactive(NULL), - limit = 1e+05 + reset = reactive(NULL) ) } \arguments{ diff --git a/man/limit_data_size.Rd b/man/limit_data_size.Rd deleted file mode 100644 index f6780e8c..00000000 --- a/man/limit_data_size.Rd +++ /dev/null @@ -1,26 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/import-file-ext.R -\name{limit_data_size} -\alias{limit_data_size} -\title{Limit the allowed data set size by number of cells} -\usage{ -limit_data_size(data, limit = NULL) -} -\arguments{ -\item{data}{data.frame} - -\item{limit}{cell number limit. Default is NULL.} -} -\value{ -data.frame -} -\description{ -This function may act to guard a hosted app against very large data sets in -addition to the file size limitations. -The function will limit the data set by dropping rows. -} -\examples{ -prod(dim(mtcars)) -limit_data_size(mtcars) -limit_data_size(mtcars,100) -} diff --git a/man/vertical_stacked_bars.Rd b/man/vertical_stacked_bars.Rd index 52f3c5c0..af09a99b 100644 --- a/man/vertical_stacked_bars.Rd +++ b/man/vertical_stacked_bars.Rd @@ -12,8 +12,7 @@ vertical_stacked_bars( t.size = 10, l.color = "black", l.size = 0.5, - draw.lines = TRUE, - label.str = "{n}\\n{round(100 * p,0)}\%" + draw.lines = TRUE ) } \arguments{ diff --git a/renv.lock b/renv.lock index 548bff24..49bb63e6 100644 --- a/renv.lock +++ b/renv.lock @@ -1201,8 +1201,7 @@ "License": "Unlimited", "NeedsCompilation": "no", "Author": "Angelo Canty [aut] (author of original code for S), Brian Ripley [aut, trl] (conversion to R, maintainer 1999--2022, author of parallel support), Alessandra R. Brazzale [ctb, cre] (minor bug fixes)", - "Repository": "RSPM", - "Encoding": "UTF-8" + "Repository": "CRAN" }, "brio": { "Package": "brio",