latest release
Some checks failed
pkgdown.yaml / pkgdown (push) Has been cancelled

This commit is contained in:
Andreas Gammelgaard Damsbo 2025-10-08 11:13:30 +02:00
commit a06177481b
No known key found for this signature in database
35 changed files with 459 additions and 435 deletions

View file

@ -1,7 +1,7 @@
########
#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmprKaNhO/file2c953618a132.R
#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpQghyAd/file101dc71002b73.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.3'
########
@ -500,7 +500,7 @@ create_column_ui <- function(id) {
actionButton(
inputId = ns("compute"),
label = tagList(
phosphoricons::ph("gear"), i18n$t("Create column")
phosphoricons::ph("pencil"), i18n$t("Create column")
),
class = "btn-outline-primary",
width = "100%"
@ -508,7 +508,8 @@ create_column_ui <- function(id) {
actionButton(
inputId = ns("remove"),
label = tagList(
phosphoricons::ph("trash")
phosphoricons::ph("x-circle"),
i18n$t("Cancel")
),
class = "btn-outline-danger",
width = "100%"
@ -535,9 +536,7 @@ create_column_server <- function(id,
info_alert <- shinyWidgets::alert(
status = "info",
phosphoricons::ph("question"),
i18n$t("Choose a name for the column to be created or modified,"),
i18n$t("then enter an expression before clicking on the button above to validate or on "),
phosphoricons::ph("trash"), i18n$t("to delete it.")
i18n$t("Choose a name for the column to be created or modified, then enter an expression before clicking on the button below to create the variable, or cancel to exit without saving anything.")
)
rv <- reactiveValues(
@ -639,6 +638,7 @@ list_allowed_operations <- function() {
}
#' @inheritParams shiny::modalDialog
#' @export
#'
@ -3093,7 +3093,7 @@ describe_col_factor <- function(x, with_summary = TRUE) {
style = htmltools::css(fontStyle = "italic"),
get_var_icon(x),
# phosphoricons::ph("list-bullets"),
"factor"
class(x)
),
if (with_summary) {
tagList(
@ -3246,7 +3246,7 @@ construct_col_summary <- function(data) {
values <- data[[col]]
content <- if (inherits(values, "character")) {
describe_col_char(values)
} else if (inherits(values, "factor")) {
} else if (inherits(values, c("factor","logical"))) {
describe_col_factor(values)
} else if (inherits(values, c("numeric", "integer"))) {
describe_col_num(values)
@ -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.3-251008'
########
@ -4133,7 +4133,7 @@ import_globalenv_ui <- function(id,
id = ns("import-result"),
status = "info",
tags$b(i18n$t("No data selected!")),
i18n$t("Use a datasat from your environment or from the environment of a package."),
i18n$t("Use a dataset from your environment or from the environment of a package."),
dismissible = TRUE
)
),
@ -4210,7 +4210,9 @@ import_globalenv_server <- function(id,
selected = character(0),
choices = choices,
choicesOpt = choicesOpt,
options = list(title = i18n$t("List of datasets..."))
options = list(
title = i18n$t("List of datasets..."),
"live-search" = TRUE)
)
})
@ -4219,7 +4221,7 @@ import_globalenv_server <- function(id,
id = "import-result",
status = "info",
tags$b(i18n$t("No data selected!")),
i18n$t("Use a datasat from your environment or from the environment of a package."),
i18n$t("Use a dataset from your environment or from the environment of a package."),
dismissible = TRUE
)
)
@ -5311,7 +5313,7 @@ plot_box <- function(data, pri, sec, ter = NULL,...) {
)
})
wrap_plot_list(out,title=glue::glue("Grouped by {get_label(data,ter)}"),...)
wrap_plot_list(out,title=glue::glue(i18n$t("Grouped by {get_label(data,ter)}")),...)
}
@ -5794,7 +5796,7 @@ plot_sankey <- function(data, pri, sec, ter = NULL, color.group = "pri", colors
#' plot_sankey_single("first", "last", color.group = "pri")
#' mtcars |>
#' default_parsing() |>
#' plot_sankey_single("cyl", "vs", color.group = "pri")
#' 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)
@ -5969,7 +5971,7 @@ plot_violin <- function(data, pri, sec, ter = NULL) {
)
})
wrap_plot_list(out, title = glue::glue("Grouped by {get_label(data,ter)}"))
wrap_plot_list(out, title = glue::glue(i18n$t("Grouped by {get_label(data,ter)}")))
})
# patchwork::wrap_plots(out,guides = "collect")
}
@ -6088,12 +6090,6 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) {
width = "100%"
),
shiny::helpText(i18n$t("Format should be either 'https://redcap.your.institution/' or 'https://your.institution/redcap/'")),
# shiny::textInput(
# inputId = ns("api"),
# label = "API token",
# value = "",
# width = "100%"
# ),
shiny::passwordInput(
inputId = ns("api"),
label = i18n$t("API token"),
@ -6117,7 +6113,7 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) {
shinyWidgets::alert(
id = ns("connect-result"),
status = "info",
tags$p(phosphoricons::ph("info", weight = "bold"), "Please fill in server address (URI) and API token, then press 'Connect'.")
tags$p(phosphoricons::ph("info", weight = "bold"), i18n$t("Please fill in web address and API token, then press 'Connect'."))
),
dismissible = TRUE
),
@ -7794,18 +7790,18 @@ regression_ui <- function(id, ...) {
# )
# ),
shiny::uiOutput(outputId = ns("regression_type")),
shiny::radioButtons(
inputId = ns("all"),
label = i18n$t("Specify covariables"),
inline = TRUE,
selected = 2,
choiceNames = c(
"Yes",
"No"
),
choiceValues = c(1, 2)
),
# shiny::uiOutput(outputId = ns("all")),
# shiny::radioButtons(
# inputId = ns("all"),
# label = i18n$t("Specify covariables"),
# inline = TRUE,
# selected = 2,
# choiceNames = c(
# "Yes",
# "No"
# ),
# choiceValues = c(1, 2)
# ),
shiny::uiOutput(outputId = ns("all_vars")),
shiny::conditionalPanel(
condition = "input.all==1",
shiny::uiOutput(outputId = ns("regression_vars")),
@ -7827,17 +7823,7 @@ regression_ui <- function(id, ...) {
),
shiny::helpText(i18n$t("Press 'Analyse' to create the regression model and after changing parameters.")),
shiny::tags$br(),
shiny::radioButtons(
inputId = ns("add_regression_p"),
label = i18n$t("Show p-value"),
inline = TRUE,
selected = "yes",
choiceNames = c(
"Yes",
"No"
),
choiceValues = c("yes", "no")
),
shiny::uiOutput(outputId = ns("add_regression_p")),
# shiny::tags$br(),
# shiny::radioButtons(
# inputId = ns("tbl_theme"),
@ -7985,20 +7971,32 @@ regression_server <- function(id,
bslib::accordion_panel_update(id = "acc_checks", target = "acc_pan_checks", title = i18n$t("Checks"))
})
# shiny::observe({
# shiny::updateRadioButtons(
# session = session,
# inputId = "all",
# label = i18n$t("Specify covariables"),
# # inline = TRUE,
# # selected = 2,
# choiceNames = c(
# i18n$t("Yes"),
# i18n$t("No")
# ),
# choiceValues = c(1, 2)
# )
# })
output$all_vars <- shiny::renderUI(
shiny::radioButtons(
inputId = ns("all"),
label = i18n$t("Specify covariables"),
inline = TRUE,
selected = 2,
choiceNames = c(
i18n$t("Yes"),
i18n$t("No")
),
choiceValues = c(1, 2)
),
)
output$add_regression_p <- shiny::renderUI(
shiny::radioButtons(
inputId = ns("add_regression_p"),
label = i18n$t("Show p-value"),
inline = TRUE,
selected = "yes",
choiceNames = c(
i18n$t("Yes"),
i18n$t("No")
),
choiceValues = c("yes", "no")
))
@ -8796,7 +8794,7 @@ ui_elements <- function(selection) {
import_globalenv_ui(
id = "env",
title = NULL,
packages = c("NHANES", "stRoke")
packages = c("NHANES", "stRoke", "datasets")
)
),
# shiny::conditionalPanel(
@ -9027,6 +9025,7 @@ ui_elements <- function(selection) {
),
shiny::tags$br(),
shiny::helpText(i18n$t("Reset to original imported dataset. Careful! There is no un-doing.")),
shiny::tags$br(),
shiny::tags$br()
)
# )
@ -9139,7 +9138,7 @@ ui_elements <- function(selection) {
title = "Settings",
icon = bsicons::bs_icon("x-circle"),
shiny::uiOutput("missings_var"),
shiny::helpText(i18n$t("To consider if data is missing by random, choose the outcome/dependent variable, if it has any missings to evaluate if there is a significant difference across other variables depending on missing data or not."))
shiny::helpText(i18n$t("To consider if data is missing by random, choose the outcome/dependent variable (only variables with any missings are available). If there is a significant difference across other variables depending on missing observations, it may not be missing at random."))
)
)
),
@ -11459,7 +11458,8 @@ ui <- bslib::page_fixed(
#### Current file: /Users/au301842/FreesearchR/app/server.R
########
data(mtcars)
data("mtcars")
data("iris")
# trial <- gtsummary::trial
# starwars <- dplyr::starwars
@ -11739,7 +11739,7 @@ server <- function(input, output, session) {
)
},
error = function(err) {
showNotification(paste0("We encountered the following error showing missingness: ", err), type = "err")
showNotification(paste(i18n$t("We encountered the following error showing missingness:"), err), type = "err")
}
)
})
@ -12176,7 +12176,7 @@ server <- function(input, output, session) {
show_data(REDCapCAST::fct_drop(rv$data_filtered), title = i18n$t("Uploaded data overview"), type = "modal")
},
error = function(err) {
showNotification(paste0("We encountered the following error browsing your data: ", err), type = "err")
showNotification(paste(i18n$t("We encountered the following error browsing your data:"), err), type = "err")
}
)
})
@ -12200,7 +12200,7 @@ server <- function(input, output, session) {
)
},
error = function(err) {
showNotification(paste0("We encountered the following error showing missingness: ", err), type = "err")
showNotification(paste(i18n$t("We encountered the following error showing missingness:"), err), type = "err")
}
)
})
@ -12247,12 +12247,12 @@ server <- function(input, output, session) {
output$code_import <- shiny::renderUI({
shiny::req(rv$code$import)
prismCodeBlock(paste0(i18n$t("#Data import\n"), rv$code$import))
prismCodeBlock(paste0("#", i18n$t("Data import"), "\n", rv$code$import))
})
output$code_format <- shiny::renderUI({
shiny::req(rv$code$format)
prismCodeBlock(paste0(i18n$t("#Data import formatting\n"), rv$code$format))
prismCodeBlock(paste0("#", i18n$t("Data import formatting"), "\n", rv$code$format))
})
output$code_data <- shiny::renderUI({
@ -12270,23 +12270,23 @@ server <- function(input, output, session) {
pipe_string() |>
expression_string(assign.str = "df <- df |>\n")
prismCodeBlock(paste0("#Data modifications\n", out))
prismCodeBlock(paste0("#", i18n$t("Data modifications"), "\n", out))
})
output$code_variables <- shiny::renderUI({
shiny::req(rv$code$variables)
out <- expression_string(rv$code$variables, assign.str = "df <- df |>\n")
prismCodeBlock(paste0("#Variables filter\n", out))
prismCodeBlock(paste0("#", i18n$t("Variables filter"), "\n", out))
})
output$code_filter <- shiny::renderUI({
shiny::req(rv$code$filter)
prismCodeBlock(paste0("#Data filter\n", rv$code$filter))
prismCodeBlock(paste0("#", i18n$t("Data filter"), "\n", rv$code$filter))
})
output$code_table1 <- shiny::renderUI({
shiny::req(rv$code$table1)
prismCodeBlock(paste0("#Data characteristics table\n", rv$code$table1))
prismCodeBlock(paste0("#", i18n$t("Data characteristics table"), "\n", rv$code$table1))
})
@ -12330,7 +12330,7 @@ server <- function(input, output, session) {
output$data_info_nochar <- shiny::renderUI({
shiny::req(rv$list$data)
data_description(rv$list$data, data_text = "The dataset without text variables")
data_description(rv$list$data, data_text = i18n$t("The dataset without text variables"))
})
## Only allow evaluation if the dataset has fewer then 50 variables
@ -12369,9 +12369,9 @@ server <- function(input, output, session) {
# # 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"))
})
shiny::withProgress(message = i18n$t("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) {
@ -12399,7 +12399,7 @@ server <- function(input, output, session) {
inputId = "outcome_var_cor",
selected = "none",
data = rv$list$data,
label = "Select outcome variable",
label = i18n$t("Select outcome variable"),
col_subset = c(
"none",
colnames(rv$list$data)
@ -12425,7 +12425,7 @@ server <- function(input, output, session) {
output$missings_var <- shiny::renderUI({
columnSelectInput(
inputId = "missings_var",
label = "Select variable to stratify analysis",
label = i18n$t("Select variable to stratify analysis"),
data = shiny::reactive({
shiny::req(rv$data_filtered)
rv$data_filtered[apply(rv$data_filtered, 2, anyNA)]
@ -12523,7 +12523,7 @@ server <- function(input, output, session) {
rv$list$regression <- rv$regression()
rv$list$missings <- rv$missings()
shiny::withProgress(message = "Generating the report. Hold on for a moment..", {
shiny::withProgress(message = i18n$t("Generating the report. Hold on for a moment.."), {
tryCatch(
{
rv$list |>

View file

@ -8,6 +8,10 @@ a free tool for basic data evaluation and analysis. If you need more
advanced tools, start with <strong><em>FreesearchR</em></strong> and
then youll probably be better off using <em>R</em> or similar
directly.</p>
<p>The <strong><em>FreesearchR</em></strong> app should be available to
as many people as possible, and the interface can be translated to any
language. If you have suggestions or want to help translate, please
reach out on <a href="mailto:info@freesearchr.org">info@freesearchr.org</a>.</p>
<p>With this tool you can:</p>
<ol style="list-style-type: decimal">
<li><p><strong>Import data</strong> from a spreadsheet/file on your

View file

@ -6,6 +6,8 @@ output: html_fragment
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.
The ***FreesearchR*** app should be available to as many people as possible, and the interface can be translated to any language. If you have suggestions or want to help translate, please reach out on [info@freesearchr.org](mailto:info@freesearchr.org).
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")

View file

@ -20,18 +20,18 @@ eksempel-data eller tilgå data direkte <a href="https://agdamsbo.github.io/Free
afvikler i R lokalt</a></p></li>
<li><p><strong>Forbered</strong> data til analys ved at filtrere, ændre
variabler eller opret helt nye variabler</p></li>
<li><p><strong>Evaluate data</strong> using descriptive analyses methods
and inspect cross-correlations as well as <a href="https://agdamsbo.github.io/FreesearchR/articles/missingness.html" title="Read more about missing data">missing observations</a></p></li>
<li><p><strong>Visualise data</strong> by <a href="https://agdamsbo.github.io/FreesearchR/articles/visuals.html" title="See available plot types">creating simple, clean plots</a> for
overview and quick insights</p></li>
<li><p><strong>Create simple regression models</strong> for even more
advanced data analyses</p></li>
<li><p><strong>Download</strong> results as a report, get the modified
data set and save the code for learning and to reproduce the results
later</p></li>
<li><p><strong>Evaluer data</strong> ved hjælp af beskrivende
analysemetoder og inspicer krydskorrelationer samt <a href="https://agdamsbo.github.io/FreesearchR/articles/missingness.html" title="Læs mere om manglende data">manglende observationer</a></p></li>
<li><p><strong>Visualiser data</strong> ved at <a href="https://agdamsbo.github.io/FreesearchR/articles/visuals.html" title="Se tilgængelige plottyper">oprette enkle, rene plots</a> for
overblik og hurtig indsigt</p></li>
<li><p><strong>Opret simple regressionsmodeller</strong> til endnu mere
avancerede dataanalyser</p></li>
<li><p><strong>Download</strong> resultater som en rapport, hent det
ændrede datasæt og gem koden til læring og til senere reproduktion af
resultaterne</p></li>
</ol>
<p>The full <a href="https://agdamsbo.github.io/FreesearchR/">project
documentation is here</a> where youll find detailed descriptions of the
app and link to the source code! If you want to <a href="https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8">share feedback,
please follow this link to a simple survey</a>.</p>
<p>Den fulde <a href="https://agdamsbo.github.io/FreesearchR/">projektdokumentation er
her</a>, hvor du finder detaljerede beskrivelser af appen og et link til
kildekoden! Hvis du vil <a href="https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8">dele feedback,
kan du følge dette link til et enkelt spørgeskema</a>.</p>
</div>

View file

@ -14,12 +14,12 @@ Herunder kan du helt kort se, hvad du kan bruge ***FreesearchR*** til:
2. **Forbered** data til analys ved at filtrere, ændre variabler eller opret helt nye variabler
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")
3. **Evaluer data** ved hjælp af beskrivende analysemetoder og inspicer krydskorrelationer samt [manglende observationer](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Læs mere om manglende data")
4. **Visualise data** by [creating simple, clean plots](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "See available plot types") for overview and quick insights
4. **Visualiser data** ved at [oprette enkle, rene plots](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "Se tilgængelige plottyper") for overblik og hurtig indsigt
5. **Create simple regression models** for even more advanced data analyses
5. **Opret simple regressionsmodeller** til endnu mere avancerede dataanalyser
6. **Download** results as a report, get the modified data set and save the code for learning and to reproduce the results later
6. **Download** resultater som en rapport, hent det ændrede datasæt og gem koden til læring og til senere reproduktion af resultaterne
The full [project documentation is here](https://agdamsbo.github.io/FreesearchR/) where you'll find detailed descriptions of the app and link to the source code! If you want to [share feedback, please follow this link to a simple survey](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8).
Den fulde [projektdokumentation er her](https://agdamsbo.github.io/FreesearchR/), hvor du finder detaljerede beskrivelser af appen og et link til kildekoden! Hvis du vil [dele feedback, kan du følge dette link til et enkelt spørgeskema](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8).

File diff suppressed because one or more lines are too long

View file

@ -2,7 +2,7 @@
output: html_fragment
---
# Karibu <img src="FreesearchR-logo.png" style="float: right;"/>
# Karibu sana! <img src="FreesearchR-logo.png" style="float: right;"/>
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.
@ -10,16 +10,16 @@ Tunajitahidi kutambulisha tafsiri kamili kwa Kiswahili. Ikiwa ungependa kuchangi
Na ***FreesearchR*** unaweza:
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")
1. **Ingiza data** kutoka kwa lahajedwali/faili kwenye mashine yako, moja kwa moja kutoka kwa seva ya [REDCap](https://projectredcap.org/ "Soma zaidi kuhusu zana ya kunasa data ya REDCap"), ijaribu kwa sampuli ya data au ufikie data moja kwa moja [ikiwa inaendeshwa katika R ndani ya nchi](https://agdamsbo.github.io/Freesearchourcal-R/-#ownon-run-your-ruwnon-" FreesearchR kwenye mashine yako ya karibu")
2. **Prepare** data for analysis by filtering data, modifying variables or create new variables
2. **Andaa** data kwa uchanganuzi kwa kuchuja data, kurekebisha vigeu au kuunda vigeu vipya
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")
3. **Tathmini data** kwa kutumia mbinu za uchanganuzi wa maelezo na ukague miunganisho mtambuka pamoja na [maoni yanayokosekana](https://agdamsbo.github.io/FreesearchR/articles/missingness.html "Soma zaidi kuhusu kukosa data")
4. **Visualise data** by [creating simple, clean plots](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "See available plot types") for overview and quick insights
4. **Onyesha data** kwa [kuunda viwanja rahisi na safi](https://agdamsbo.github.io/FreesearchR/articles/visuals.html "Angalia aina zinazopatikana za viwanja") kwa muhtasari na maarifa ya haraka
5. **Create simple regression models** for even more advanced data analyses
5. **Unda miundo rahisi ya kurejesha kumbukumbu** kwa uchanganuzi wa hali ya juu zaidi wa data
6. **Download** results as a report, get the modified data set and save the code for learning and to reproduce the results later
6. **Pakua** matokeo kama ripoti, pata seti ya data iliyorekebishwa na uhifadhi msimbo wa kujifunza na kutoa matokeo baadaye
The full [project documentation is here](https://agdamsbo.github.io/FreesearchR/) where you'll find detailed descriptions of the app and link to the source code! If you want to [share feedback, please follow this link to a simple survey](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8).
[Hati kamili za mradi ziko hapa](https://agdamsbo.github.io/FreesearchR/) ambapo utapata maelezo ya kina ya programu na kiungo cha msimbo wa chanzo! Iwapo ungependa [kushiriki maoni, tafadhali fuata kiungo hiki cha utafiti rahisi](https://redcap.au.dk/surveys/?s=JPCLPTXYDKFA8DA8).