From 7bbc14730477ef737744b1ae1283356a9662e8bb Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Wed, 29 Jan 2025 11:17:49 +0100 Subject: [PATCH] new docs --- DESCRIPTION | 23 ++++++++++++----------- NAMESPACE | 4 ++++ R/REDCap_split.r | 2 +- R/read_redcap_tables.R | 2 +- R/shiny_cast.R | 16 +++++++++++----- REDCapCAST.Rproj | 1 + man/REDCapCAST-package.Rd | 2 -- man/REDCap_split.Rd | 2 +- man/clean_redcap_name.Rd | 2 +- man/cut_string_length.Rd | 2 +- man/d2w.Rd | 2 +- man/figures/logo.png | Bin 10000 -> 0 bytes man/figures/rook-cap.png | Bin 8846 -> 0 bytes man/focused_metadata.Rd | 2 +- man/get_id_name.Rd | 2 +- man/is_repeated_longitudinal.Rd | 2 +- man/match_fields_to_form.Rd | 2 +- man/process_user_input.Rd | 2 +- man/process_user_input.character.Rd | 2 +- man/process_user_input.data.frame.Rd | 2 +- man/process_user_input.default.Rd | 2 +- man/process_user_input.response.Rd | 2 +- man/sanitize_split.Rd | 2 +- man/split_non_repeating_forms.Rd | 2 +- man/strsplitx.Rd | 2 +- 25 files changed, 46 insertions(+), 36 deletions(-) delete mode 100644 man/figures/logo.png delete mode 100644 man/figures/rook-cap.png diff --git a/DESCRIPTION b/DESCRIPTION index ab96677..27cd967 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -34,7 +34,8 @@ Suggests: roxygen2, spelling, rhub, - rsconnect + rsconnect, + pkgconfig License: GPL (>= 3) Encoding: UTF-8 LazyData: true @@ -50,24 +51,26 @@ Imports: purrr, readr, stats, - shiny, - haven, zip, assertthat, - openxlsx2, - readODS, forcats, vctrs, gt, bslib, here, glue, - gtsummary + gtsummary, + shiny, + haven, + openxlsx2, + readODS +Language: en-US +VignetteBuilder: knitr Collate: 'REDCapCAST-package.R' - 'utils.R' - 'process_user_input.R' - 'REDCap_split.R' + 'utils.r' + 'process_user_input.r' + 'REDCap_split.r' 'as_factor.R' 'doc2dd.R' 'ds2dd_detailed.R' @@ -82,5 +85,3 @@ Collate: 'redcapcast_data.R' 'redcapcast_meta.R' 'shiny_cast.R' -Language: en-US -VignetteBuilder: knitr diff --git a/NAMESPACE b/NAMESPACE index 078a7c7..7271809 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -74,11 +74,15 @@ importFrom(REDCapR,redcap_metadata_read) importFrom(REDCapR,redcap_read) importFrom(forcats,as_factor) importFrom(forcats,fct_drop) +importFrom(haven,read_dta) importFrom(keyring,key_get) importFrom(keyring,key_list) importFrom(keyring,key_set) importFrom(openxlsx2,read_xlsx) importFrom(purrr,reduce) +importFrom(readODS,read_ods) importFrom(readr,parse_time) +importFrom(readr,read_csv) +importFrom(readr,read_rds) importFrom(tidyr,pivot_wider) importFrom(tidyselect,all_of) diff --git a/R/REDCap_split.r b/R/REDCap_split.r index d89aaf8..a9e617a 100644 --- a/R/REDCap_split.r +++ b/R/REDCap_split.r @@ -80,7 +80,7 @@ #' \item \code{'all'}: a data.frame for each instrument, regardless of #' whether it is a repeating instrument or not. #' } -#' @include process_user_input.R utils.R +#' @include process_user_input.r utils.r #' @export REDCap_split <- function(records, metadata, diff --git a/R/read_redcap_tables.R b/R/read_redcap_tables.R index 26ec207..b530333 100644 --- a/R/read_redcap_tables.R +++ b/R/read_redcap_tables.R @@ -31,7 +31,7 @@ #' #' @return list of instruments #' @importFrom REDCapR redcap_metadata_read redcap_read redcap_event_instruments -#' @include utils.R +#' @include utils.r #' @export #' #' @examples diff --git a/R/shiny_cast.R b/R/shiny_cast.R index 08d7d6e..6a462bd 100644 --- a/R/shiny_cast.R +++ b/R/shiny_cast.R @@ -47,6 +47,12 @@ file_extension <- function(filenames) { #' @return tibble #' @export #' +#' @importFrom openxlsx2 read_xlsx +#' @importFrom haven read_dta +#' @importFrom readODS read_ods +#' @importFrom readr read_csv read_rds +#' +#' #' @examples #' read_input("https://raw.githubusercontent.com/agdamsbo/cognitive.index.lookup/main/data/sample.csv") read_input <- function(file, consider.na = c("NA", '""', "")) { @@ -55,15 +61,15 @@ read_input <- function(file, consider.na = c("NA", '""', "")) { tryCatch( { if (ext == "csv") { - df <- readr::read_csv(file = file, na = consider.na) + df <- read_csv(file = file, na = consider.na) } else if (ext %in% c("xls", "xlsx")) { - df <- openxlsx2::read_xlsx(file = file, na.strings = consider.na) + df <- read_xlsx(file = file, na.strings = consider.na) } else if (ext == "dta") { - df <- haven::read_dta(file = file) + df <- read_dta(file = file) } else if (ext == "ods") { - df <- readODS::read_ods(path = file) + df <- read_ods(path = file) } else if (ext == "rds") { - df <- readr::read_rds(file = file) + df <- read_rds(file = file) }else { stop("Input file format has to be on of: '.csv', '.xls', '.xlsx', '.dta', '.ods' or '.rds'") diff --git a/REDCapCAST.Rproj b/REDCapCAST.Rproj index cfc222c..012f82a 100644 --- a/REDCapCAST.Rproj +++ b/REDCapCAST.Rproj @@ -19,4 +19,5 @@ StripTrailingWhitespace: Yes BuildType: Package PackageUseDevtools: Yes PackageInstallArgs: --no-multiarch --with-keep.source +PackageCheckArgs: --as-cran PackageRoxygenize: rd,collate,namespace,vignette diff --git a/man/REDCapCAST-package.Rd b/man/REDCapCAST-package.Rd index 32f0b06..c7b06c2 100644 --- a/man/REDCapCAST-package.Rd +++ b/man/REDCapCAST-package.Rd @@ -6,8 +6,6 @@ \alias{REDCapCAST-package} \title{REDCapCAST: REDCap Metadata Casting and Castellated Data Handling} \description{ -\if{html}{\figure{logo.png}{options: style='float: right' alt='logo' width='120'}} - Casting metadata for REDCap database creation and handling of castellated data using repeated instruments and longitudinal projects in 'REDCap'. Keeps a focused data export approach, by allowing to only export required data from the database. Also for casting new REDCap databases based on datasets from other sources. Originally forked from the R part of 'REDCapRITS' by Paul Egeler. See \url{https://github.com/pegeler/REDCapRITS}. 'REDCap' (Research Electronic Data Capture) is a secure, web-based software platform designed to support data capture for research studies, providing 1) an intuitive interface for validated data capture; 2) audit trails for tracking data manipulation and export procedures; 3) automated export procedures for seamless data downloads to common statistical packages; and 4) procedures for data integration and interoperability with external sources (Harris et al (2009) \doi{10.1016/j.jbi.2008.08.010}; Harris et al (2019) \doi{10.1016/j.jbi.2019.103208}). } \seealso{ diff --git a/man/REDCap_split.Rd b/man/REDCap_split.Rd index 86df0ad..1389ac8 100644 --- a/man/REDCap_split.Rd +++ b/man/REDCap_split.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/REDCap_split.R +% Please edit documentation in R/REDCap_split.r \name{REDCap_split} \alias{REDCap_split} \title{Split REDCap repeating instruments table into multiple tables} diff --git a/man/clean_redcap_name.Rd b/man/clean_redcap_name.Rd index 6559e56..8040bf7 100644 --- a/man/clean_redcap_name.Rd +++ b/man/clean_redcap_name.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils.R +% Please edit documentation in R/utils.r \name{clean_redcap_name} \alias{clean_redcap_name} \title{clean_redcap_name} diff --git a/man/cut_string_length.Rd b/man/cut_string_length.Rd index 2c143de..0264e20 100644 --- a/man/cut_string_length.Rd +++ b/man/cut_string_length.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils.R +% Please edit documentation in R/utils.r \name{cut_string_length} \alias{cut_string_length} \title{Cut string to desired length} diff --git a/man/d2w.Rd b/man/d2w.Rd index ba6b585..ef41520 100644 --- a/man/d2w.Rd +++ b/man/d2w.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/utils.R +% Please edit documentation in R/utils.r \name{d2w} \alias{d2w} \title{Convert single digits to words} diff --git a/man/figures/logo.png b/man/figures/logo.png deleted file mode 100644 index 714ef58b310a255d89e68d7b1b6fbe5a2c5c3343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10000 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 diff --git a/man/figures/rook-cap.png b/man/figures/rook-cap.png deleted file mode 100644 index 97fbf0f864236608c5d1cb52cad600dc92779716..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8846 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 T