diff --git a/DESCRIPTION b/DESCRIPTION
index d52d41a..1f96b7e 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -43,7 +43,6 @@ Imports:
datamods,
toastui,
webshot,
- matPkg,
lubridate
Suggests:
styler,
diff --git a/NAMESPACE b/NAMESPACE
index 4c55412..43a9398 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -1,17 +1,23 @@
# Generated by roxygen2: do not edit by hand
+S3method(cut,hms)
S3method(regression_table,default)
S3method(regression_table,list)
export(argsstring2list)
export(baseline_table)
+export(cut_variable_server)
+export(cut_variable_ui)
export(default_format_arguments)
export(factorize)
export(format_writer)
export(getfun)
export(index_embed)
+export(is_any_class)
+export(is_datetime)
export(m_datafileUI)
export(m_redcap_readServer)
export(m_redcap_readUI)
+export(modal_cut_variable)
export(modify_qmd)
export(read_input)
export(regression_model)
@@ -20,5 +26,45 @@ export(regression_table)
export(shiny_webResearch)
export(specify_qmd_format)
export(tbl_merge)
+export(winbox_cut_variable)
export(write_quarto)
+importFrom(classInt,classIntervals)
+importFrom(graphics,abline)
+importFrom(graphics,axis)
+importFrom(graphics,hist)
+importFrom(graphics,par)
+importFrom(graphics,plot.new)
+importFrom(graphics,plot.window)
+importFrom(htmltools,tagList)
+importFrom(rlang,"%||%")
+importFrom(rlang,call2)
+importFrom(rlang,expr)
+importFrom(rlang,set_names)
+importFrom(rlang,syms)
+importFrom(shiny,NS)
+importFrom(shiny,bindEvent)
+importFrom(shiny,checkboxInput)
+importFrom(shiny,column)
+importFrom(shiny,fluidRow)
+importFrom(shiny,modalDialog)
+importFrom(shiny,moduleServer)
+importFrom(shiny,numericInput)
+importFrom(shiny,observeEvent)
+importFrom(shiny,plotOutput)
+importFrom(shiny,reactive)
+importFrom(shiny,renderPlot)
+importFrom(shiny,req)
+importFrom(shiny,showModal)
+importFrom(shiny,textInput)
+importFrom(shiny,uiOutput)
+importFrom(shinyWidgets,WinBox)
+importFrom(shinyWidgets,noUiSliderInput)
+importFrom(shinyWidgets,updateVirtualSelect)
+importFrom(shinyWidgets,virtualSelectInput)
+importFrom(shinyWidgets,wbControls)
+importFrom(shinyWidgets,wbOptions)
importFrom(stats,as.formula)
+importFrom(toastui,datagrid)
+importFrom(toastui,datagridOutput2)
+importFrom(toastui,grid_colorbar)
+importFrom(toastui,renderDatagrid2)
diff --git a/R/cut-variable-dates.R b/R/cut-variable-dates.R
index 78b07f7..2bd877d 100644
--- a/R/cut-variable-dates.R
+++ b/R/cut-variable-dates.R
@@ -90,7 +90,7 @@ library(shiny)
#'
#' @rdname cut
#'
-#' @return
+#' @return factor
#' @export
#'
#' @examples
@@ -114,7 +114,11 @@ cut.hms <- function(x, breaks, ...) {
#' @rdname cut
#' @param x an object inheriting from class "POSIXt" or "Date"
-cut.POSIXt <- function(x, breaks, right = FALSE, include.lowest = TRUE, ...) {
+#'
+#' @examples
+#' readr::parse_datetime(c("1992-02-01 01:00:20", "1992-02-06 03:00:20", "1992-05-01 01:20:20", "1992-09-01 08:20:20", "1999-02-01 21:20:20", "1992-12-01 03:02:20")) |> cut(2)
+#' readr::parse_datetime(c("1992-02-01 01:00:20", "1992-02-06 03:00:20", "1992-05-01 01:20:20", "1992-09-01 08:20:20", "1999-02-01 21:20:20", "1992-12-01 03:02:20")) |> cut(breaks="weekday")
+cut.POSIXt <- function(x, breaks, right = FALSE, include.lowest = TRUE, start.on.monday=TRUE, ...) {
breaks_o <- breaks
# browser()
if (is.numeric(breaks)) {
@@ -127,14 +131,22 @@ cut.POSIXt <- function(x, breaks, right = FALSE, include.lowest = TRUE, ...) {
)
}
+ if(identical(breaks,"weekday")){
+ days <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
+ "Sunday")
+ if (!start.on.monday){
+ days <- days[c(7,1:6)]
+ }
+ out <- factor(weekdays(x),levels=days) |> forcats::fct_drop()
+ } else {
## Doesn't really work very well for breaks other than the special character cases as right border is excluded
out <- base::cut.POSIXt(x, breaks=breaks,right=right,...) |> forcats::fct_drop()
# browser()
-
+}
l <- levels(out)
if (is.numeric(breaks_o)) {
l <- breaks
- } else if (is.character(breaks) && length(breaks) == 1) {
+ } else if (is.character(breaks) && length(breaks) == 1 && !identical(breaks,"weekday")) {
if (include.lowest) {
if (right) {
l <- c(l, min(as.character(x)))
@@ -154,12 +166,34 @@ cut.POSIXt <- function(x, breaks, right = FALSE, include.lowest = TRUE, ...) {
#' @param x an object inheriting from class "POSIXct"
cut.POSIXct <- cut.POSIXt
+#' @rdname cut
+#' @param x an object inheriting from class "POSIXct"
+#'
+#' @examples
+#' as.Date(c("1992-02-01 01:00:20", "1992-02-06 03:00:20", "1992-05-01 01:20:20", "1992-09-01 08:20:20", "1999-02-01 21:20:20", "1992-12-01 03:02:20")) |> cut(2)
+#' as.Date(c("1992-02-01 01:00:20", "1992-02-06 03:00:20", "1992-05-01 01:20:20", "1992-09-01 08:20:20", "1999-02-01 21:20:20", "1992-12-01 03:02:20")) |> cut(breaks="weekday")
+cut.Date <- function(x,breaks,start.on.monday=TRUE,...){
+ if(identical(breaks,"weekday")){
+ days <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday",
+ "Sunday")
+ if (!start.on.monday){
+ days <- days[c(7,1:6)]
+ }
+ out <- factor(weekdays(x),levels=days) |> forcats::fct_drop()
+ } else {
+ ## Doesn't really work very well for breaks other than the special character cases as right border is excluded
+ out <- base::cut.Date(x, breaks=breaks,...) |> forcats::fct_drop()
+ # browser()
+ }
+ out
+}
+
#' Test class
#'
#' @param data data
#' @param class.vec vector of class names to test
#'
-#' @return
+#' @return factor
#' @export
#'
#' @examples
@@ -174,7 +208,7 @@ is_any_class <- function(data, class.vec) {
#'
#' @param data data
#'
-#' @return
+#' @return factor
#' @export
#'
#' @examples
@@ -200,7 +234,6 @@ is_datetime <- function(data) {
#'
#' @name cut-variable
#'
-#' @example examples/cut_variable.R
cut_variable_ui <- function(id) {
ns <- NS(id)
tagList(
@@ -343,7 +376,9 @@ cut_variable_server <- function(id, data_r = reactive(NULL)) {
choices <- c(choices, "hour")
} else if (any(c("POSIXt","Date") %in% class(data[[variable]]))) {
choices <- c(
- choices, "day",
+ choices,
+ "day",
+ "weekday",
"week",
"month",
"quarter",
@@ -412,6 +447,7 @@ cut_variable_server <- function(id, data_r = reactive(NULL)) {
}
} else if (input$method %in% c(
"day",
+ "weekday",
"week",
"month",
"quarter",
@@ -447,7 +483,7 @@ cut_variable_server <- function(id, data_r = reactive(NULL)) {
variable <- req(input$variable)
data[[paste0(variable, "_cut")]] <- cut(
x = data[[variable]],
- breaks = if (input$method %in% c("day", "week", "month", "quarter", "year", "hour")) input$method else breaks_r()$brks,
+ breaks = if (input$method %in% c("day", "weekday", "week", "month", "quarter", "year", "hour")) input$method else breaks_r()$brks,
include.lowest = input$include_lowest,
right = input$right
)
diff --git a/inst/apps/data_analysis_modules/server.R b/inst/apps/data_analysis_modules/server.R
index 07da214..75fc89d 100644
--- a/inst/apps/data_analysis_modules/server.R
+++ b/inst/apps/data_analysis_modules/server.R
@@ -31,15 +31,19 @@ library(IDEAFilter)
# }
# library(webResearch)
-if (file.exists(here::here("functions.R"))) {
- source(here::here("functions.R"))
-}
+source(here::here("functions.R"))
server <- function(input, output, session) {
## Listing files in www in session start to keep when ending and removing
## everything else.
files.to.keep <- list.files("www/")
+ output$docs_file <- renderUI({
+ # shiny::includeHTML("www/docs.html")
+ HTML(readLines("www/docs.html"))
+ })
+
+
rv <- shiny::reactiveValues(
list = NULL,
ds = NULL,
@@ -193,7 +197,7 @@ server <- function(input, output, session) {
)
output$original_str <- renderPrint({
- str(ds())
+ str(rv$data_original)
})
output$modified_str <- renderPrint({
@@ -290,25 +294,25 @@ server <- function(input, output, session) {
## Have a look at column filters at some point
## There should be a way to use the filtering the filter data for further analyses
## Disabled for now, as the JS is apparently not isolated
- output$data_table <-
- DT::renderDT(
- {
- DT::datatable(ds()[base_vars()])
- },
- server = FALSE
- )
-
- output$data.classes <- gt::render_gt({
- shiny::req(input$file)
- data.frame(matrix(sapply(ds(), \(.x){
- class(.x)[1]
- }), nrow = 1)) |>
- stats::setNames(names(ds())) |>
- gt::gt()
- })
+ # output$data_table <-
+ # DT::renderDT(
+ # {
+ # DT::datatable(ds()[base_vars()])
+ # },
+ # server = FALSE
+ # )
+ #
+ # output$data.classes <- gt::render_gt({
+ # shiny::req(input$file)
+ # data.frame(matrix(sapply(ds(), \(.x){
+ # class(.x)[1]
+ # }), nrow = 1)) |>
+ # stats::setNames(names(ds())) |>
+ # gt::gt()
+ # })
shiny::observeEvent(input$act_start, {
- bslib::nav_select(id = "main_panel", selected = "Overview and modifications")
+ bslib::nav_select(id = "main_panel", selected = "Modifications")
})
shiny::observeEvent(
diff --git a/inst/apps/data_analysis_modules/ui.R b/inst/apps/data_analysis_modules/ui.R
index b756cff..1b6a5f0 100644
--- a/inst/apps/data_analysis_modules/ui.R
+++ b/inst/apps/data_analysis_modules/ui.R
@@ -30,17 +30,22 @@ ui_elements <- list(
shinyWidgets::radioGroupButtons(
inputId = "source",
# label = "Choice: ",
- choices = c("File upload" = "file", "REDCap server" = "redcap","Sample data"="env"),
- checkIcon = list(
- yes = icon("square-check"),
- no = icon("square")
- )
+ choices = c(
+ "File upload" = "file",
+ "REDCap server" = "redcap",
+ "Sample data" = "env"
+ ),
+ # checkIcon = list(
+ # yes = icon("square-check"),
+ # no = icon("square")
+ # ),
+ width = "100%"
),
shiny::conditionalPanel(
condition = "input.source=='file'",
datamods::import_file_ui("file_import",
- title = "Choose a datafile to upload",
- file_extensions = c(".csv", ".txt", ".xls", ".xlsx", ".rds", ".fst", ".sas7bdat", ".sav", ".ods", ".dta")
+ title = "Choose a datafile to upload",
+ file_extensions = c(".csv", ".txt", ".xls", ".xlsx", ".rds", ".fst", ".sas7bdat", ".sav", ".ods", ".dta")
)
),
shiny::conditionalPanel(
@@ -57,13 +62,7 @@ ui_elements <- list(
),
column(
width = 6,
- shiny::markdown("
- # Welcome
-
- This is the ***freesearchR*** web data analysis tool. An opiniotaed tool for easy data analysis at the hands of the clinician.
-
- By intention, this is a focused app, with only few data modification tools included to keep the workflow streamlined.
- ")
+ shiny::markdown(readLines("www/intro.md"))
)
),
shiny::conditionalPanel(
@@ -79,10 +78,10 @@ ui_elements <- list(
#########
##############################################################################
"overview" =
- # bslib::nav_panel_hidden(
+ # bslib::nav_panel_hidden(
bslib::nav_panel(
# value = "overview",
- title = "Overview and modifications",
+ title = "Modifications",
bslib::navset_bar(
fillable = TRUE,
# bslib::nav_panel(
@@ -170,7 +169,7 @@ ui_elements <- list(
#########
##############################################################################
"analyze" =
- # bslib::nav_panel_hidden(
+ # bslib::nav_panel_hidden(
bslib::nav_panel(
# value = "analyze",
title = "Analyses",
@@ -230,8 +229,8 @@ ui_elements <- list(
icon = shiny::icon("pencil", lib = "glyphicon"),
label_busy = "Working...",
icon_busy = fontawesome::fa_i("arrows-rotate",
- class = "fa-spin",
- "aria-hidden" = "true"
+ class = "fa-spin",
+ "aria-hidden" = "true"
),
type = "primary",
auto_reset = TRUE
@@ -260,7 +259,8 @@ ui_elements <- list(
##############################################################################
"docs" = bslib::nav_panel(
title = "Documentation",
- shiny::markdown(readLines(here::here("inst/apps/data_analysis_modules/www/intro.md"))),
+ # shiny::tags$iframe("www/docs.html", height=600, width=535),
+ shiny::htmlOutput("docs_file"),
shiny::br()
)
)
diff --git a/inst/apps/data_analysis_modules/www/docs.html b/inst/apps/data_analysis_modules/www/docs.html
new file mode 100644
index 0000000..8e610fb
--- /dev/null
+++ b/inst/apps/data_analysis_modules/www/docs.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+freesearcheR platform documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
+Welcome!
+So glad to see you here! Welcome to test this early concept of a platform to easily explore, manipulate and analyse clinical data.
+Below will be a more detailed description of the included features and possibilities, as well as the planned and possible feature additions.
+Contribute
+Contributions are very welcome. If you find anything odd, or you think of features to add or remove, please share and report on the project page on GitHub.
+Roadmap
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/inst/apps/data_analysis_modules/www/docs.md b/inst/apps/data_analysis_modules/www/docs.md
new file mode 100644
index 0000000..652850a
--- /dev/null
+++ b/inst/apps/data_analysis_modules/www/docs.md
@@ -0,0 +1,34 @@
+# Documentation on the freesearcheR platform
+
+Welcome! So glad to see you here! Welcome to test this early concept of a platform to easily explore, manipulate and analyse clinical data.
+
+Below will be a more detailed description of the included features and possibilities, as well as the planned and possible feature additions.
+
+
+## Roadmap
+
+- [ ] Stratified analyses
+
+- Additional study designs:
+
+ - [x] Cross-sectional data analyses
+
+ - [ ] Longitudinal data analyses
+
+ - [ ] Survival analysis
+
+- More detailed variable browser
+
+ - [ ] Add histograms for datadistribution
+
+ - [ ] Option to edit labels
+
+- [ ] Plot regression analyses results
+
+- [ ] Export modified data
+
+- [ ] Include reproducible code for all steps
+
+- [ ] Modify factor levels
+
+- [ ] More options for date/datetime/time grouping/factoring
diff --git a/inst/apps/data_analysis_modules/www/docs.qmd b/inst/apps/data_analysis_modules/www/docs.qmd
new file mode 100644
index 0000000..be633f4
--- /dev/null
+++ b/inst/apps/data_analysis_modules/www/docs.qmd
@@ -0,0 +1,45 @@
+---
+title: "***freesearcheR*** platform documentation"
+format:
+ html:
+ self-contained: true
+ minimal: true
+---
+
+# Welcome!
+
+So glad to see you here! Welcome to test this early concept of a platform to easily explore, manipulate and analyse clinical data.
+
+Below will be a more detailed description of the included features and possibilities, as well as the planned and possible feature additions.
+
+## Contribute
+
+Contributions are very welcome. If you find anything odd, or you think of features to add or remove, please [share and report on the project page on GitHub](https://github.com/agdamsbo/webResearch/issues).
+
+## Roadmap
+
+- [ ] Stratified analyses
+
+- Additional study designs:
+
+ - [x] Cross-sectional data analyses
+
+ - [ ] Longitudinal data analyses
+
+ - [ ] Survival analysis
+
+- More detailed variable browser
+
+ - [ ] Add histograms for data distribution
+
+ - [ ] Option to edit variable labels for nicer tables
+
+- [ ] Plot regression analyses results
+
+- [ ] Export modified data
+
+- [ ] Include reproducible code for all steps
+
+- [ ] Modify factor levels (including naming, order, collapsing, removing)
+
+- [ ] More options for date/datetime/time grouping/factoring
diff --git a/inst/apps/data_analysis_modules/www/intro.md b/inst/apps/data_analysis_modules/www/intro.md
index 329b5e5..fbb31ce 100644
--- a/inst/apps/data_analysis_modules/www/intro.md
+++ b/inst/apps/data_analysis_modules/www/intro.md
@@ -1,3 +1,21 @@
-# Intro to webResearch/freesearcheR/VOICE
+# Welcome
-This is just placeholder text.
+This is the ***freesearchR*** web data analysis tool. The ***freesearchR*** is an opinioated tool for easy data evaluation and analysis at the hands of the clinician. We intend it to be a powerful to, that is easy and secure to use.
+
+By intention, this tool has been designed to be simple to use with a minimum of mandatory options to keep the workflow streamlined, while also including a few options to go even further.
+
+There are four simple steps to go through:
+
+1. Import data (this can be a spreadsheet on your machine or direct export from a REDCap server)
+
+2. A *optional* step of data modification (change variable classes and creating categorical variables (factors) from numeric or time data)
+
+3. Data analysis of cross-sectionally designed studies
+
+ - Classic baseline charactieristics (options to stratify and compare variables)
+
+ - Linear, dichotomous or ordinal logistic regression will be used depending on specified outcome variable
+
+ - Evaluation of model assumptions
+
+4. Export the the analyses results as .docx or .odt.
diff --git a/man/cut-variable.Rd b/man/cut-variable.Rd
new file mode 100644
index 0000000..1c034b1
--- /dev/null
+++ b/man/cut-variable.Rd
@@ -0,0 +1,60 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/cut-variable-dates.R
+\name{cut-variable}
+\alias{cut-variable}
+\alias{cut_variable_ui}
+\alias{cut_variable_server}
+\alias{modal_cut_variable}
+\alias{winbox_cut_variable}
+\title{Module to Convert Numeric to Factor}
+\usage{
+cut_variable_ui(id)
+
+cut_variable_server(id, data_r = reactive(NULL))
+
+modal_cut_variable(
+ id,
+ title = i18n("Convert Numeric to Factor"),
+ easyClose = TRUE,
+ size = "l",
+ footer = NULL
+)
+
+winbox_cut_variable(
+ id,
+ title = i18n("Convert Numeric to Factor"),
+ options = shinyWidgets::wbOptions(),
+ controls = shinyWidgets::wbControls()
+)
+}
+\arguments{
+\item{id}{Module ID.}
+
+\item{data_r}{A \code{\link[shiny:reactive]{shiny::reactive()}} function returning a \code{data.frame}.}
+
+\item{title}{An optional title for the dialog.}
+
+\item{easyClose}{If \code{TRUE}, the modal dialog can be dismissed by
+clicking outside the dialog box, or be pressing the Escape key. If
+\code{FALSE} (the default), the modal dialog can't be dismissed in those
+ways; instead it must be dismissed by clicking on a \code{modalButton()}, or
+from a call to \code{\link[shiny:removeModal]{removeModal()}} on the server.}
+
+\item{size}{One of \code{"s"} for small, \code{"m"} (the default) for medium,
+\code{"l"} for large, or \code{"xl"} for extra large. Note that \code{"xl"} only
+works with Bootstrap 4 and above (to opt-in to Bootstrap 4+,
+pass \code{\link[bslib:bs_theme]{bslib::bs_theme()}} to the \code{theme} argument of a page container
+like \code{\link[shiny:fluidPage]{fluidPage()}}).}
+
+\item{footer}{UI for footer. Use \code{NULL} for no footer.}
+
+\item{options}{List of options, see \code{\link[shinyWidgets:wbOptions]{wbOptions()}}.}
+
+\item{controls}{List of controls, see \code{\link[shinyWidgets:wbControls]{wbControls()}}.}
+}
+\value{
+A \code{\link[shiny:reactive]{shiny::reactive()}} function returning the data.
+}
+\description{
+This module contain an interface to cut a numeric into several intervals.
+}
diff --git a/man/cut.Rd b/man/cut.Rd
new file mode 100644
index 0000000..4a5b566
--- /dev/null
+++ b/man/cut.Rd
@@ -0,0 +1,55 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/cut-variable-dates.R
+\name{cut.hms}
+\alias{cut.hms}
+\alias{cut.POSIXt}
+\alias{cut.POSIXct}
+\alias{cut.Date}
+\title{Title}
+\usage{
+\method{cut}{hms}(x, breaks, ...)
+
+\method{cut}{POSIXt}(
+ x,
+ breaks,
+ right = FALSE,
+ include.lowest = TRUE,
+ start.on.monday = TRUE,
+ ...
+)
+
+\method{cut}{POSIXct}(
+ x,
+ breaks,
+ right = FALSE,
+ include.lowest = TRUE,
+ start.on.monday = TRUE,
+ ...
+)
+
+\method{cut}{Date}(x, breaks, start.on.monday = TRUE, ...)
+}
+\arguments{
+\item{x}{an object inheriting from class "POSIXct"}
+
+\item{...}{passed on}
+}
+\value{
+factor
+}
+\description{
+Title
+}
+\examples{
+readr::parse_time(c("01:00:20", "03:00:20", "01:20:20", "08:20:20", "21:20:20", "03:02:20")) |> cut(2)
+readr::parse_time(c("01:00:20", "03:00:20", "01:20:20", "08:20:20", "21:20:20", "03:02:20")) |> cut("min")
+readr::parse_time(c("01:00:20", "03:00:20", "01:20:20", "08:20:20", "21:20:20", "03:02:20")) |> cut(breaks = "hour")
+readr::parse_time(c("01:00:20", "03:00:20", "01:20:20", "08:20:20", "21:20:20", "03:02:20")) |> cut(breaks = hms::as_hms(c("01:00:00", "03:01:20", "9:20:20")))
+d_t <- readr::parse_time(c("01:00:20", "03:00:20", "01:20:20", "03:02:20", NA))
+f <- d_t |> cut(2)
+readr::parse_time(c("01:00:20", "03:00:20", "01:20:20", "03:02:20", NA)) |> cut(breaks = lubridate::as_datetime(c(hms::as_hms(levels(f)), hms::as_hms(max(d_t, na.rm = TRUE) + 1))), right = FALSE)
+readr::parse_datetime(c("1992-02-01 01:00:20", "1992-02-06 03:00:20", "1992-05-01 01:20:20", "1992-09-01 08:20:20", "1999-02-01 21:20:20", "1992-12-01 03:02:20")) |> cut(2)
+readr::parse_datetime(c("1992-02-01 01:00:20", "1992-02-06 03:00:20", "1992-05-01 01:20:20", "1992-09-01 08:20:20", "1999-02-01 21:20:20", "1992-12-01 03:02:20")) |> cut(breaks="weekday")
+as.Date(c("1992-02-01 01:00:20", "1992-02-06 03:00:20", "1992-05-01 01:20:20", "1992-09-01 08:20:20", "1999-02-01 21:20:20", "1992-12-01 03:02:20")) |> cut(2)
+as.Date(c("1992-02-01 01:00:20", "1992-02-06 03:00:20", "1992-05-01 01:20:20", "1992-09-01 08:20:20", "1999-02-01 21:20:20", "1992-12-01 03:02:20")) |> cut(breaks="weekday")
+}
diff --git a/man/is_any_class.Rd b/man/is_any_class.Rd
new file mode 100644
index 0000000..6aa32b3
--- /dev/null
+++ b/man/is_any_class.Rd
@@ -0,0 +1,24 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/cut-variable-dates.R
+\name{is_any_class}
+\alias{is_any_class}
+\title{Test class}
+\usage{
+is_any_class(data, class.vec)
+}
+\arguments{
+\item{data}{data}
+
+\item{class.vec}{vector of class names to test}
+}
+\value{
+factor
+}
+\description{
+Test class
+}
+\examples{
+vapply(REDCapCAST::redcapcast_data, \(.x){
+ is_any_class(.x, c("hms", "Date", "POSIXct", "POSIXt"))
+}, logical(1))
+}
diff --git a/man/is_datetime.Rd b/man/is_datetime.Rd
new file mode 100644
index 0000000..02fb994
--- /dev/null
+++ b/man/is_datetime.Rd
@@ -0,0 +1,20 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/cut-variable-dates.R
+\name{is_datetime}
+\alias{is_datetime}
+\title{Test is date/datetime/time}
+\usage{
+is_datetime(data)
+}
+\arguments{
+\item{data}{data}
+}
+\value{
+factor
+}
+\description{
+Test is date/datetime/time
+}
+\examples{
+vapply(REDCapCAST::redcapcast_data, is_datetime, logical(1))
+}
diff --git a/man/redcap_read_shiny_module.Rd b/man/redcap_read_shiny_module.Rd
index 3456743..226abfb 100644
--- a/man/redcap_read_shiny_module.Rd
+++ b/man/redcap_read_shiny_module.Rd
@@ -5,13 +5,15 @@
\alias{m_redcap_readServer}
\title{Shiny module to browser and export REDCap data}
\usage{
-m_redcap_readUI(id)
+m_redcap_readUI(id, include_title = TRUE)
-m_redcap_readServer(id, output.format = "df")
+m_redcap_readServer(id, output.format = c("df", "teal", "list"))
}
\arguments{
\item{id}{Namespace id}
+\item{include_title}{logical to include title}
+
\item{output.format}{data.frame ("df") or teal data object ("teal")}
}
\value{
diff --git a/renv.lock b/renv.lock
index 004d128..bf6c7be 100644
--- a/renv.lock
+++ b/renv.lock
@@ -57,6 +57,55 @@
],
"Hash": "64ff3427f559ce3f2597a4fe13255cb6"
},
+ "Deriv": {
+ "Package": "Deriv",
+ "Version": "4.1.6",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "methods"
+ ],
+ "Hash": "cd52c065c9e687c60c56b51f10f7bcd3"
+ },
+ "Formula": {
+ "Package": "Formula",
+ "Version": "1.2-5",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "stats"
+ ],
+ "Hash": "7a29697b75e027767a53fde6c903eca7"
+ },
+ "IDEAFilter": {
+ "Package": "IDEAFilter",
+ "Version": "0.2.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "RColorBrewer",
+ "crayon",
+ "ggplot2",
+ "pillar",
+ "purrr",
+ "shiny",
+ "shinyTime"
+ ],
+ "Hash": "515977d035ab72c1e6334a732fc58923"
+ },
+ "KernSmooth": {
+ "Package": "KernSmooth",
+ "Version": "2.23-24",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "stats"
+ ],
+ "Hash": "9f33a1ee37bbe8919eb2ec4b9f2473a5"
+ },
"MASS": {
"Package": "MASS",
"Version": "7.3-61",
@@ -89,6 +138,19 @@
],
"Hash": "5122bb14d8736372411f955e1b16bc8a"
},
+ "MatrixModels": {
+ "Package": "MatrixModels",
+ "Version": "0.5-3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "Matrix",
+ "R",
+ "methods",
+ "stats"
+ ],
+ "Hash": "0776bf7526869e0286b0463cb72fb211"
+ },
"PKI": {
"Package": "PKI",
"Version": "0.1-14",
@@ -100,6 +162,60 @@
],
"Hash": "f5b9c6b2f62f1fa3dd53fd1ddccbb241"
},
+ "R.cache": {
+ "Package": "R.cache",
+ "Version": "0.16.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R.methodsS3",
+ "R.oo",
+ "R.utils",
+ "digest",
+ "utils"
+ ],
+ "Hash": "fe539ca3f8efb7410c3ae2cf5fe6c0f8"
+ },
+ "R.methodsS3": {
+ "Package": "R.methodsS3",
+ "Version": "1.8.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "utils"
+ ],
+ "Hash": "278c286fd6e9e75d0c2e8f731ea445c8"
+ },
+ "R.oo": {
+ "Package": "R.oo",
+ "Version": "1.27.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R.methodsS3",
+ "methods",
+ "utils"
+ ],
+ "Hash": "6ac79ff194202248cf946fe3a5d6d498"
+ },
+ "R.utils": {
+ "Package": "R.utils",
+ "Version": "2.12.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R.methodsS3",
+ "R.oo",
+ "methods",
+ "tools",
+ "utils"
+ ],
+ "Hash": "3dc2829b790254bfba21e60965787651"
+ },
"R6": {
"Package": "R6",
"Version": "2.5.1",
@@ -122,7 +238,7 @@
},
"REDCapCAST": {
"Package": "REDCapCAST",
- "Version": "24.11.2",
+ "Version": "24.12.1",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
@@ -134,6 +250,7 @@
"forcats",
"glue",
"gt",
+ "gtsummary",
"haven",
"here",
"keyring",
@@ -148,7 +265,7 @@
"vctrs",
"zip"
],
- "Hash": "86814281365527b3983f58228d190ef4"
+ "Hash": "d0925e579ddfbedeb536c5cbf65fc42f"
},
"REDCapR": {
"Package": "REDCapR",
@@ -208,6 +325,20 @@
],
"Hash": "a9e2118c664c2cd694f03de074e8d4b3"
},
+ "SparseM": {
+ "Package": "SparseM",
+ "Version": "1.84-2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "graphics",
+ "methods",
+ "stats",
+ "utils"
+ ],
+ "Hash": "e78499cbcbbca98200254bd171379165"
+ },
"V8": {
"Package": "V8",
"Version": "6.0.0",
@@ -221,6 +352,18 @@
],
"Hash": "6603bfcbc7883a5fed41fb13042a3899"
},
+ "abind": {
+ "Package": "abind",
+ "Version": "1.4-8",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "methods",
+ "utils"
+ ],
+ "Hash": "2288423bb0f20a457800d7fc47f6aa54"
+ },
"ape": {
"Package": "ape",
"Version": "5.8",
@@ -308,13 +451,13 @@
},
"bit": {
"Package": "bit",
- "Version": "4.5.0",
+ "Version": "4.5.0.1",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R"
],
- "Hash": "5dc7b2677d65d0e874fc4aaf0e879987"
+ "Hash": "f89f074e0e49bf1dbe3eba0a15a91476"
},
"bit64": {
"Package": "bit64",
@@ -339,7 +482,7 @@
},
"boot": {
"Package": "boot",
- "Version": "1.3-30",
+ "Version": "1.3-31",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
@@ -347,7 +490,7 @@
"graphics",
"stats"
],
- "Hash": "96abeed416a286d4a0f52e550b612343"
+ "Hash": "de2a4646c18661d6a0a08ec67f40b7ed"
},
"broom": {
"Package": "broom",
@@ -435,6 +578,54 @@
],
"Hash": "cd9a672193789068eb5a2aad65a0dedf"
},
+ "callr": {
+ "Package": "callr",
+ "Version": "3.7.6",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R6",
+ "processx",
+ "utils"
+ ],
+ "Hash": "d7e13f49c19103ece9e58ad2d83a7354"
+ },
+ "car": {
+ "Package": "car",
+ "Version": "3.1-3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "Formula",
+ "MASS",
+ "R",
+ "abind",
+ "carData",
+ "grDevices",
+ "graphics",
+ "lme4",
+ "mgcv",
+ "nlme",
+ "nnet",
+ "pbkrtest",
+ "quantreg",
+ "scales",
+ "stats",
+ "utils"
+ ],
+ "Hash": "82067bf302d1440b730437693a86406a"
+ },
+ "carData": {
+ "Package": "carData",
+ "Version": "3.0-5",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "ac6cdb8552c61bd36b0e54d07cf2aab7"
+ },
"cards": {
"Package": "cards",
"Version": "0.4.0",
@@ -492,6 +683,35 @@
],
"Hash": "0e14e01ce07e7c88fd25de6d4260d26b"
},
+ "class": {
+ "Package": "class",
+ "Version": "7.3-22",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "MASS",
+ "R",
+ "stats",
+ "utils"
+ ],
+ "Hash": "f91f6b29f38b8c280f2b9477787d4bb2"
+ },
+ "classInt": {
+ "Package": "classInt",
+ "Version": "0.4-10",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "KernSmooth",
+ "R",
+ "class",
+ "e1071",
+ "grDevices",
+ "graphics",
+ "stats"
+ ],
+ "Hash": "f5a40793b1ae463a7ffb3902a95bf864"
+ },
"cli": {
"Package": "cli",
"Version": "3.6.3",
@@ -560,15 +780,32 @@
],
"Hash": "8b6512d8f60685736ee3bafdc292190d"
},
+ "cowplot": {
+ "Package": "cowplot",
+ "Version": "1.1.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "ggplot2",
+ "grDevices",
+ "grid",
+ "gtable",
+ "methods",
+ "rlang",
+ "scales"
+ ],
+ "Hash": "8ef2084dd7d28847b374e55440e4f8cb"
+ },
"cpp11": {
"Package": "cpp11",
- "Version": "0.5.0",
+ "Version": "0.5.1",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R"
],
- "Hash": "91570bba75d0c9d3f1040c835cee8fba"
+ "Hash": "9df43854f1c84685d095ed6270b52387"
},
"crayon": {
"Package": "crayon",
@@ -607,14 +844,40 @@
},
"data.table": {
"Package": "data.table",
- "Version": "1.16.2",
+ "Version": "1.16.4",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
"R",
"methods"
],
- "Hash": "2e00b378fc3be69c865120d9f313039a"
+ "Hash": "38bbf05fc2503143db4c734a7e5cab66"
+ },
+ "datamods": {
+ "Package": "datamods",
+ "Version": "1.5.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "bslib",
+ "classInt",
+ "data.table",
+ "htmltools",
+ "phosphoricons",
+ "reactable",
+ "readxl",
+ "rio",
+ "rlang",
+ "shiny",
+ "shinyWidgets",
+ "shinybusy",
+ "tibble",
+ "toastui",
+ "tools",
+ "writexl"
+ ],
+ "Hash": "d60f340d79847514abe3e79ac919b74b"
},
"datawizard": {
"Package": "datawizard",
@@ -640,6 +903,30 @@
],
"Hash": "33698c4b3127fc9f506654607fb73676"
},
+ "doBy": {
+ "Package": "doBy",
+ "Version": "4.6.24",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "Deriv",
+ "MASS",
+ "Matrix",
+ "R",
+ "boot",
+ "broom",
+ "cowplot",
+ "dplyr",
+ "ggplot2",
+ "methods",
+ "microbenchmark",
+ "modelr",
+ "rlang",
+ "tibble",
+ "tidyr"
+ ],
+ "Hash": "8ddf795104defe53c5392a588888ec68"
+ },
"doParallel": {
"Package": "doParallel",
"Version": "1.0.17",
@@ -677,6 +964,22 @@
],
"Hash": "fedd9d00c2944ff00a0e2696ccf048ec"
},
+ "e1071": {
+ "Package": "e1071",
+ "Version": "1.7-16",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "class",
+ "grDevices",
+ "graphics",
+ "methods",
+ "proxy",
+ "stats",
+ "utils"
+ ],
+ "Hash": "27a09ca40266a1066d62ef5402dd51d6"
+ },
"easystats": {
"Package": "easystats",
"Version": "0.7.3",
@@ -701,7 +1004,7 @@
},
"effectsize": {
"Package": "effectsize",
- "Version": "0.8.9",
+ "Version": "1.0.0",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
@@ -714,7 +1017,35 @@
"stats",
"utils"
],
- "Hash": "7aceb5e07b6d48171c6b56714cc305ea"
+ "Hash": "b289af101f62cb7b46c53d1a45ed5198"
+ },
+ "emmeans": {
+ "Package": "emmeans",
+ "Version": "1.10.5",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "estimability",
+ "graphics",
+ "methods",
+ "mvtnorm",
+ "numDeriv",
+ "stats",
+ "utils"
+ ],
+ "Hash": "5c42da2936ccaa3802b4893a65553dc4"
+ },
+ "estimability": {
+ "Package": "estimability",
+ "Version": "1.5.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "stats"
+ ],
+ "Hash": "21ec52af13afbcab1cb317567b639b0a"
},
"evaluate": {
"Package": "evaluate",
@@ -762,6 +1093,50 @@
],
"Hash": "192053c276525c8495ccfd523aa8f2d1"
},
+ "flextable": {
+ "Package": "flextable",
+ "Version": "0.9.7",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "data.table",
+ "gdtools",
+ "grDevices",
+ "graphics",
+ "grid",
+ "htmltools",
+ "knitr",
+ "officer",
+ "ragg",
+ "rlang",
+ "rmarkdown",
+ "stats",
+ "utils",
+ "uuid",
+ "xml2"
+ ],
+ "Hash": "e3201bd3a94311654ff35cf2ddc3343e"
+ },
+ "fontBitstreamVera": {
+ "Package": "fontBitstreamVera",
+ "Version": "0.1.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "f6068021eff4aba735a9b2353516636c"
+ },
+ "fontLiberation": {
+ "Package": "fontLiberation",
+ "Version": "0.1.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "f918c5e723f86f409912104d5b7a71d6"
+ },
"fontawesome": {
"Package": "fontawesome",
"Version": "0.5.3",
@@ -774,6 +1149,18 @@
],
"Hash": "bd1297f9b5b1fc1372d19e2c4cd82215"
},
+ "fontquiver": {
+ "Package": "fontquiver",
+ "Version": "0.2.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "fontBitstreamVera",
+ "fontLiberation"
+ ],
+ "Hash": "fc0f4226379e451057d55419fd31761e"
+ },
"forcats": {
"Package": "forcats",
"Version": "1.0.0",
@@ -803,6 +1190,35 @@
],
"Hash": "618609b42c9406731ead03adf5379850"
},
+ "foreign": {
+ "Package": "foreign",
+ "Version": "0.8-87",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "methods",
+ "stats",
+ "utils"
+ ],
+ "Hash": "81fc09bdeab0077a73927ed1243404b6"
+ },
+ "formatters": {
+ "Package": "formatters",
+ "Version": "0.5.9",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "checkmate",
+ "grid",
+ "htmltools",
+ "lifecycle",
+ "methods",
+ "stringi"
+ ],
+ "Hash": "8be2fff2bd140e59cc3bc32fa761de26"
+ },
"fs": {
"Package": "fs",
"Version": "1.6.5",
@@ -839,6 +1255,21 @@
],
"Hash": "779651ac2943370c5453c2d907429fc9"
},
+ "gdtools": {
+ "Package": "gdtools",
+ "Version": "0.4.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "Rcpp",
+ "fontquiver",
+ "htmltools",
+ "systemfonts",
+ "tools"
+ ],
+ "Hash": "169e77416ce3f7ac73fc975909dd5455"
+ },
"generics": {
"Package": "generics",
"Version": "0.1.3",
@@ -871,6 +1302,25 @@
],
"Hash": "14b3b3b923944afb9542dbef4c68bf4b"
},
+ "ggmosaic": {
+ "Package": "ggmosaic",
+ "Version": "0.3.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "dplyr",
+ "ggplot2",
+ "ggrepel",
+ "plotly",
+ "productplots",
+ "purrr",
+ "rlang",
+ "scales",
+ "tidyr"
+ ],
+ "Hash": "9c716443a2b821aa997c5675386bd34b"
+ },
"ggplot2": {
"Package": "ggplot2",
"Version": "3.5.1",
@@ -896,6 +1346,22 @@
],
"Hash": "44c6a2f8202d5b7e878ea274b1092426"
},
+ "ggrepel": {
+ "Package": "ggrepel",
+ "Version": "0.9.6",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "Rcpp",
+ "ggplot2",
+ "grid",
+ "rlang",
+ "scales",
+ "withr"
+ ],
+ "Hash": "3d4156850acc1161f2f24bc61c9217c1"
+ },
"glue": {
"Package": "glue",
"Version": "1.8.0",
@@ -907,6 +1373,20 @@
],
"Hash": "5899f1eaa825580172bb56c08266f37c"
},
+ "gridExtra": {
+ "Package": "gridExtra",
+ "Version": "2.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "grDevices",
+ "graphics",
+ "grid",
+ "gtable",
+ "utils"
+ ],
+ "Hash": "7d7f283939f563670a697165b2cf5560"
+ },
"gt": {
"Package": "gt",
"Version": "0.11.1",
@@ -955,7 +1435,7 @@
},
"gtsummary": {
"Package": "gtsummary",
- "Version": "2.0.3",
+ "Version": "2.0.4",
"Source": "Repository",
"Repository": "CRAN",
"Requirements": [
@@ -970,7 +1450,7 @@
"tidyr",
"vctrs"
],
- "Hash": "cd4d593e8ce0ad4e5c2c0acc50ce7330"
+ "Hash": "a6cb3a1251d2a86c14ccc3e9977437dc"
},
"haven": {
"Package": "haven",
@@ -1307,6 +1787,30 @@
],
"Hash": "c6fafa6cccb1e1dfe7f7d122efd6e6a7"
},
+ "logger": {
+ "Package": "logger",
+ "Version": "0.4.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "utils"
+ ],
+ "Hash": "f25d781d5bc7757e08cf38c741a5ad1c"
+ },
+ "lubridate": {
+ "Package": "lubridate",
+ "Version": "1.9.4",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "generics",
+ "methods",
+ "timechange"
+ ],
+ "Hash": "be38bc740fc51783a78edb5a157e4104"
+ },
"magrittr": {
"Package": "magrittr",
"Version": "2.0.3",
@@ -1358,6 +1862,18 @@
],
"Hash": "110ee9d83b496279960e162ac97764ce"
},
+ "microbenchmark": {
+ "Package": "microbenchmark",
+ "Version": "1.5.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "graphics",
+ "stats"
+ ],
+ "Hash": "f9d226d88d4087d817d4e616626ce8e5"
+ },
"mime": {
"Package": "mime",
"Version": "0.12",
@@ -1409,6 +1925,24 @@
],
"Hash": "f519814037d08eee1343c2e7b5992cc4"
},
+ "modelr": {
+ "Package": "modelr",
+ "Version": "0.1.11",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "broom",
+ "magrittr",
+ "purrr",
+ "rlang",
+ "tibble",
+ "tidyr",
+ "tidyselect",
+ "vctrs"
+ ],
+ "Hash": "4f50122dc256b1b6996a4703fecea821"
+ },
"munsell": {
"Package": "munsell",
"Version": "0.5.1",
@@ -1420,6 +1954,17 @@
],
"Hash": "4fd8900853b746af55b81fda99da7695"
},
+ "mvtnorm": {
+ "Package": "mvtnorm",
+ "Version": "1.3-2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "stats"
+ ],
+ "Hash": "9e8405eacb262c0a939e121650247f4b"
+ },
"nlme": {
"Package": "nlme",
"Version": "3.1-166",
@@ -1441,6 +1986,48 @@
"Repository": "CRAN",
"Hash": "27550641889a3abf3aec4d91186311ec"
},
+ "nnet": {
+ "Package": "nnet",
+ "Version": "7.3-19",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "stats",
+ "utils"
+ ],
+ "Hash": "2c797b46eea7fb58ede195bc0b1f1138"
+ },
+ "numDeriv": {
+ "Package": "numDeriv",
+ "Version": "2016.8-1.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R"
+ ],
+ "Hash": "df58958f293b166e4ab885ebcad90e02"
+ },
+ "officer": {
+ "Package": "officer",
+ "Version": "0.6.7",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R6",
+ "cli",
+ "grDevices",
+ "graphics",
+ "openssl",
+ "ragg",
+ "stats",
+ "utils",
+ "uuid",
+ "xml2",
+ "zip"
+ ],
+ "Hash": "d6c0a4e796301a5d252de42c92a9a8b9"
+ },
"opdisDownsampling": {
"Package": "opdisDownsampling",
"Version": "1.0.1",
@@ -1536,6 +2123,24 @@
],
"Hash": "e23fb9ecb1258207bcb763d78d513439"
},
+ "pbkrtest": {
+ "Package": "pbkrtest",
+ "Version": "0.5.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "MASS",
+ "Matrix",
+ "R",
+ "broom",
+ "doBy",
+ "dplyr",
+ "lme4",
+ "methods",
+ "numDeriv"
+ ],
+ "Hash": "938e6bbc4ac57534f8b43224506a8966"
+ },
"pbmcapply": {
"Package": "pbmcapply",
"Version": "1.5.1",
@@ -1562,6 +2167,17 @@
],
"Hash": "64e61921ea6b2a4d76c81290d5ecce25"
},
+ "phosphoricons": {
+ "Package": "phosphoricons",
+ "Version": "0.2.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "htmltools"
+ ],
+ "Hash": "707ea26830bf7a2630955559dada2f72"
+ },
"pillar": {
"Package": "pillar",
"Version": "1.9.0",
@@ -1669,6 +2285,17 @@
],
"Hash": "0c90a7d71988856bad2a2a45dd871bb9"
},
+ "productplots": {
+ "Package": "productplots",
+ "Version": "0.1.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "ggplot2",
+ "plyr"
+ ],
+ "Hash": "75630cc31052ba299a52bb1adbf59fae"
+ },
"progress": {
"Package": "progress",
"Version": "1.2.3",
@@ -1699,6 +2326,18 @@
],
"Hash": "c84fd4f75ea1f5434735e08b7f50fbca"
},
+ "proxy": {
+ "Package": "proxy",
+ "Version": "0.4-27",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "stats",
+ "utils"
+ ],
+ "Hash": "e0ef355c12942cf7a6b91a6cfaea8b3e"
+ },
"ps": {
"Package": "ps",
"Version": "1.8.1",
@@ -1770,6 +2409,24 @@
],
"Hash": "a22b3777f51fd005a7cd4c2bccc385ae"
},
+ "quantreg": {
+ "Package": "quantreg",
+ "Version": "5.99.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "MASS",
+ "Matrix",
+ "MatrixModels",
+ "R",
+ "SparseM",
+ "graphics",
+ "methods",
+ "stats",
+ "survival"
+ ],
+ "Hash": "c48844cd7961de506a1b4d22b2e082c7"
+ },
"quarto": {
"Package": "quarto",
"Version": "1.4.4",
@@ -1790,6 +2447,17 @@
],
"Hash": "af456d7a181750812bd8b2bfedb3ea4e"
},
+ "ragg": {
+ "Package": "ragg",
+ "Version": "1.3.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "systemfonts",
+ "textshaping"
+ ],
+ "Hash": "0595fe5e47357111f29ad19101c7d271"
+ },
"rappdirs": {
"Package": "rappdirs",
"Version": "0.3.3",
@@ -1878,6 +2546,21 @@
],
"Hash": "9de96463d2117f6ac49980577939dfb3"
},
+ "readxl": {
+ "Package": "readxl",
+ "Version": "1.4.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "cellranger",
+ "cpp11",
+ "progress",
+ "tibble",
+ "utils"
+ ],
+ "Hash": "8cf9c239b96df1bbb133b74aef77ad0a"
+ },
"rematch": {
"Package": "rematch",
"Version": "2.0.0",
@@ -1914,6 +2597,29 @@
],
"Hash": "244b87e40159d58b8c84cb019e5bd16c"
},
+ "rio": {
+ "Package": "rio",
+ "Version": "1.2.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R.utils",
+ "curl",
+ "data.table",
+ "foreign",
+ "haven",
+ "lifecycle",
+ "readr",
+ "readxl",
+ "stats",
+ "tibble",
+ "tools",
+ "utils",
+ "writexl"
+ ],
+ "Hash": "baaf90aab11c061de79399519f537442"
+ },
"rlang": {
"Package": "rlang",
"Version": "1.1.4",
@@ -2003,6 +2709,24 @@
"Repository": "CRAN",
"Hash": "5f90cd73946d706cfe26024294236113"
},
+ "rtables": {
+ "Package": "rtables",
+ "Version": "0.6.10",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "checkmate",
+ "formatters",
+ "htmltools",
+ "lifecycle",
+ "magrittr",
+ "methods",
+ "stats",
+ "stringi"
+ ],
+ "Hash": "1907d8ff958d4e8d62549fcc0a0c7985"
+ },
"sass": {
"Package": "sass",
"Version": "0.4.9",
@@ -2092,6 +2816,104 @@
],
"Hash": "6a293995a66e12c48d13aa1f957d09c7"
},
+ "shinyTime": {
+ "Package": "shinyTime",
+ "Version": "1.0.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "htmltools",
+ "shiny"
+ ],
+ "Hash": "836c3464fb0f2ea865ed4c35dcdc1eda"
+ },
+ "shinyTree": {
+ "Package": "shinyTree",
+ "Version": "0.3.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "htmlwidgets",
+ "jsonlite",
+ "methods",
+ "promises",
+ "shiny",
+ "stringr"
+ ],
+ "Hash": "0493a0d70f834cb251fe4523eb17b82c"
+ },
+ "shinyWidgets": {
+ "Package": "shinyWidgets",
+ "Version": "0.8.7",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "bslib",
+ "grDevices",
+ "htmltools",
+ "jsonlite",
+ "rlang",
+ "sass",
+ "shiny"
+ ],
+ "Hash": "fd8239886f70daa85c36596214958451"
+ },
+ "shinybusy": {
+ "Package": "shinybusy",
+ "Version": "0.3.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "htmltools",
+ "htmlwidgets",
+ "jsonlite",
+ "shiny"
+ ],
+ "Hash": "7dc8feb4207741ff581422a04fc8f3ea"
+ },
+ "shinycssloaders": {
+ "Package": "shinycssloaders",
+ "Version": "1.1.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "digest",
+ "glue",
+ "grDevices",
+ "htmltools",
+ "shiny"
+ ],
+ "Hash": "2b45a467a30d6a88a1892a738c0900cf"
+ },
+ "shinyjs": {
+ "Package": "shinyjs",
+ "Version": "2.1.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "digest",
+ "jsonlite",
+ "shiny"
+ ],
+ "Hash": "802e4786b353a4bb27116957558548d5"
+ },
+ "shinyvalidate": {
+ "Package": "shinyvalidate",
+ "Version": "0.1.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "glue",
+ "htmltools",
+ "rlang",
+ "shiny"
+ ],
+ "Hash": "fe6e75a1c1722b2d23cb4d4dbe1006df"
+ },
"sodium": {
"Package": "sodium",
"Version": "1.3.2",
@@ -2109,6 +2931,17 @@
],
"Hash": "5f5a7629f956619d519205ec475fe647"
},
+ "sparkline": {
+ "Package": "sparkline",
+ "Version": "2.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "htmltools",
+ "htmlwidgets"
+ ],
+ "Hash": "06e5e4017ecb00fd142bada4b380c59a"
+ },
"stringi": {
"Package": "stringi",
"Version": "1.8.4",
@@ -2139,6 +2972,41 @@
],
"Hash": "960e2ae9e09656611e0b8214ad543207"
},
+ "styler": {
+ "Package": "styler",
+ "Version": "1.10.3",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R.cache",
+ "cli",
+ "magrittr",
+ "purrr",
+ "rlang",
+ "rprojroot",
+ "tools",
+ "vctrs",
+ "withr"
+ ],
+ "Hash": "93a2b1beac2437bdcc4724f8bf867e2c"
+ },
+ "survival": {
+ "Package": "survival",
+ "Version": "3.7-0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "Matrix",
+ "R",
+ "graphics",
+ "methods",
+ "splines",
+ "stats",
+ "utils"
+ ],
+ "Hash": "5aaa9cbaf4aba20f8e06fdea1850a398"
+ },
"sys": {
"Package": "sys",
"Version": "3.4.3",
@@ -2158,6 +3026,269 @@
],
"Hash": "213b6b8ed5afbf934843e6c3b090d418"
},
+ "teal": {
+ "Package": "teal",
+ "Version": "0.15.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "checkmate",
+ "jsonlite",
+ "lifecycle",
+ "logger",
+ "magrittr",
+ "methods",
+ "rlang",
+ "shiny",
+ "shinyjs",
+ "stats",
+ "teal.code",
+ "teal.data",
+ "teal.logger",
+ "teal.reporter",
+ "teal.slice",
+ "teal.widgets",
+ "utils"
+ ],
+ "Hash": "c9e4b15461b0fc175a386cf28f474644"
+ },
+ "teal.code": {
+ "Package": "teal.code",
+ "Version": "0.5.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "checkmate",
+ "grDevices",
+ "lifecycle",
+ "methods",
+ "rlang"
+ ],
+ "Hash": "b10128cf6d4ac18bb77463f4958ff29d"
+ },
+ "teal.data": {
+ "Package": "teal.data",
+ "Version": "0.6.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "checkmate",
+ "lifecycle",
+ "methods",
+ "rlang",
+ "stats",
+ "teal.code",
+ "utils"
+ ],
+ "Hash": "22dd132d65fb21b8efa739855cb632a8"
+ },
+ "teal.logger": {
+ "Package": "teal.logger",
+ "Version": "0.3.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "glue",
+ "lifecycle",
+ "logger",
+ "methods",
+ "shiny",
+ "utils",
+ "withr"
+ ],
+ "Hash": "b5d3366368999eb2262c2a646a1f0c87"
+ },
+ "teal.modules.general": {
+ "Package": "teal.modules.general",
+ "Version": "0.3.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "DT",
+ "R",
+ "checkmate",
+ "dplyr",
+ "forcats",
+ "ggmosaic",
+ "ggplot2",
+ "grid",
+ "logger",
+ "scales",
+ "shiny",
+ "shinyTree",
+ "shinyWidgets",
+ "shinyjs",
+ "shinyvalidate",
+ "stats",
+ "stringr",
+ "teal",
+ "teal.code",
+ "teal.data",
+ "teal.logger",
+ "teal.reporter",
+ "teal.transform",
+ "teal.widgets",
+ "tern",
+ "tibble",
+ "tidyr",
+ "tools",
+ "utils"
+ ],
+ "Hash": "f54d7bc27cd048cec3a842f980c74e9b"
+ },
+ "teal.reporter": {
+ "Package": "teal.reporter",
+ "Version": "0.3.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R6",
+ "bslib",
+ "checkmate",
+ "flextable",
+ "grid",
+ "htmltools",
+ "knitr",
+ "lifecycle",
+ "rmarkdown",
+ "shiny",
+ "shinyWidgets",
+ "shinybusy",
+ "yaml",
+ "zip"
+ ],
+ "Hash": "b09a5fb625dc8bff3965f58ba69e8fb3"
+ },
+ "teal.slice": {
+ "Package": "teal.slice",
+ "Version": "0.5.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "R6",
+ "bslib",
+ "checkmate",
+ "dplyr",
+ "grDevices",
+ "htmltools",
+ "jsonlite",
+ "lifecycle",
+ "logger",
+ "methods",
+ "plotly",
+ "shiny",
+ "shinyWidgets",
+ "shinycssloaders",
+ "shinyjs",
+ "teal.data",
+ "teal.logger",
+ "teal.widgets",
+ "utils"
+ ],
+ "Hash": "a29de94bc89bad9a12a914c17e8269f1"
+ },
+ "teal.transform": {
+ "Package": "teal.transform",
+ "Version": "0.5.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "checkmate",
+ "dplyr",
+ "lifecycle",
+ "logger",
+ "methods",
+ "rlang",
+ "shiny",
+ "shinyjs",
+ "shinyvalidate",
+ "stats",
+ "teal.data",
+ "teal.logger",
+ "teal.widgets",
+ "tidyr",
+ "tidyselect"
+ ],
+ "Hash": "988a30f3f0f20b2633b41103a8eb4e56"
+ },
+ "teal.widgets": {
+ "Package": "teal.widgets",
+ "Version": "0.4.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "bslib",
+ "checkmate",
+ "ggplot2",
+ "grDevices",
+ "graphics",
+ "htmltools",
+ "lifecycle",
+ "methods",
+ "rtables",
+ "shiny",
+ "shinyWidgets",
+ "shinyjs",
+ "styler"
+ ],
+ "Hash": "46a99bbdcd97f8f25070ad23c3b23ad9"
+ },
+ "tern": {
+ "Package": "tern",
+ "Version": "0.9.6",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "MASS",
+ "R",
+ "Rdpack",
+ "broom",
+ "car",
+ "checkmate",
+ "cowplot",
+ "dplyr",
+ "emmeans",
+ "forcats",
+ "formatters",
+ "ggplot2",
+ "grid",
+ "gridExtra",
+ "gtable",
+ "labeling",
+ "lifecycle",
+ "magrittr",
+ "methods",
+ "rlang",
+ "rtables",
+ "scales",
+ "stats",
+ "survival",
+ "tibble",
+ "tidyr",
+ "utils"
+ ],
+ "Hash": "35fe86bc358b15525217e775f5318d33"
+ },
+ "textshaping": {
+ "Package": "textshaping",
+ "Version": "0.4.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "cpp11",
+ "lifecycle",
+ "systemfonts"
+ ],
+ "Hash": "573e0d015b7fc3e555f83e254cad7533"
+ },
"tibble": {
"Package": "tibble",
"Version": "3.2.1",
@@ -2216,6 +3347,17 @@
],
"Hash": "829f27b9c4919c16b593794a6344d6c0"
},
+ "timechange": {
+ "Package": "timechange",
+ "Version": "0.3.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "cpp11"
+ ],
+ "Hash": "c5f3c201b931cd6474d17d8700ccb1c8"
+ },
"tinytex": {
"Package": "tinytex",
"Version": "0.54",
@@ -2226,6 +3368,24 @@
],
"Hash": "3ec7e3ddcacc2d34a9046941222bf94d"
},
+ "toastui": {
+ "Package": "toastui",
+ "Version": "0.3.4",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "htmltools",
+ "htmlwidgets",
+ "magrittr",
+ "phosphoricons",
+ "rlang",
+ "shiny",
+ "shinyWidgets",
+ "utils"
+ ],
+ "Hash": "cb55e4feb9d21e6b9504fda11b418aa3"
+ },
"twosamples": {
"Package": "twosamples",
"Version": "2.0.1",
@@ -2317,6 +3477,19 @@
],
"Hash": "390f9315bc0025be03012054103d227c"
},
+ "webshot": {
+ "Package": "webshot",
+ "Version": "0.5.5",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Requirements": [
+ "R",
+ "callr",
+ "jsonlite",
+ "magrittr"
+ ],
+ "Hash": "16858ee1aba97f902d24049d4a44ef16"
+ },
"withr": {
"Package": "withr",
"Version": "3.0.2",
@@ -2329,6 +3502,13 @@
],
"Hash": "cc2d62c76458d425210d1eb1478b30b4"
},
+ "writexl": {
+ "Package": "writexl",
+ "Version": "1.5.1",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Hash": "3eb948ad9591d7b34987772d44e4be12"
+ },
"xfun": {
"Package": "xfun",
"Version": "0.49",
diff --git a/webResearch.Rproj b/webResearch.Rproj
index 69fafd4..235efdc 100644
--- a/webResearch.Rproj
+++ b/webResearch.Rproj
@@ -1,4 +1,5 @@
Version: 1.0
+ProjectId: 88756fd6-a799-4963-955c-8216834cd504
RestoreWorkspace: No
SaveWorkspace: No