Skip to content
Merged
492 changes: 261 additions & 231 deletions R/build.R

Large diffs are not rendered by default.

17 changes: 13 additions & 4 deletions R/labels.R
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,12 @@ remove_labels <- function(data) {
#' Note: Deprecated in version 0.2.0. The `dataset_name` argument will be removed
#' in a future release. Please use `metacore::select_dataset` to subset the
#' `metacore` object to obtain metadata for a single dataset.
#' @param verbose Character string controlling message verbosity. One of:
#' \describe{
#' \item{`"message"`}{Show both warnings and messages (default)}
#' \item{`"warn"`}{Show warnings but suppress messages}
#' \item{`"silent"`}{Suppress all warnings and messages}
#' }
#'
#' @return Dataframe with labels applied
#' @export
Expand All @@ -85,7 +91,8 @@ remove_labels <- function(data) {
#' )
#' dm <- haven::read_xpt(metatools_example("dm.xpt"))
#' set_variable_labels(dm, mc, dataset_name = "DM")
set_variable_labels <- function(data, metacore, dataset_name = deprecated()) {
set_variable_labels <- function(data, metacore, dataset_name = deprecated(),
verbose = c("message", "warn", "silent")) {
if (is_present(dataset_name)) {
lifecycle::deprecate_warn(
when = "0.2.0",
Expand All @@ -97,6 +104,8 @@ set_variable_labels <- function(data, metacore, dataset_name = deprecated()) {
metacore <- make_lone_dataset(metacore, dataset_name)
}
verify_DatasetMeta(metacore)

verbose <- validate_verbose(verbose)

# Grab out the var names and labels
var_spec <- metacore$var_spec %>%
Expand All @@ -112,12 +121,12 @@ set_variable_labels <- function(data, metacore, dataset_name = deprecated()) {
in_meta <- ns[which(ns %in% mismatch)]
in_data <- dns[which(dns %in% mismatch)]

if (length(in_meta) > 0) {
if (length(in_meta) > 0 && should_warn(verbose)) {
wrn <- paste0("Variables in metadata not in data:\n\t", paste0(in_meta, collapse="\n\t"))
warning(wrn, call. = FALSE)
}

if (length(in_data) > 0) {
if (length(in_data) > 0 && should_warn(verbose)) {
wrn <- paste0("Variables in data not in metadata:\n\t", paste0(in_data, collapse="\n\t"))
warning(wrn, call. = FALSE)
}
Expand All @@ -136,4 +145,4 @@ set_variable_labels <- function(data, metacore, dataset_name = deprecated()) {
args = append(list(data), labs)
do.call(add_labels, args)

}
}
15 changes: 13 additions & 2 deletions R/supp.R
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,21 @@
#' @param idvar IDVAR variable name (provided as a string)
#' @param qeval QEVAL value to be populated for this QNAM
#' @param qorig QORIG value to be populated for this QNAM
#' @param verbose Character string controlling message verbosity. One of:
#' \describe{
#' \item{`"message"`}{Show both warnings and messages (default)}
#' \item{`"warn"`}{Show warnings but suppress messages}
#' \item{`"silent"`}{Suppress all warnings and messages}
#' }
#'
#' @return Observations structured in SUPP format
#' @export
#'
#'
build_qnam <- function(dataset, qnam, qlabel, idvar, qeval, qorig) {
build_qnam <- function(dataset, qnam, qlabel, idvar, qeval, qorig,
verbose = c("message", "warn", "silent")) {
verbose <- validate_verbose(verbose)

# Need QNAM as a variable
qval <- as.symbol(qnam)

Expand Down Expand Up @@ -54,7 +63,9 @@ build_qnam <- function(dataset, qnam, qlabel, idvar, qeval, qorig) {
blank_test <- out %>%
pull(QVAL)
if(any(blank_test == "")){
message(paste0("Empty QVAL rows removed for QNAM = ", unique(out$QNAM)))
if (should_message(verbose)) {
message(paste0("Empty QVAL rows removed for QNAM = ", unique(out$QNAM)))
}
out <- out %>%
filter(QVAL != "")
}
Expand Down
29 changes: 25 additions & 4 deletions R/utils.R
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ metatools_example <- function(file = NULL) {
#' @return metacore object
#' @noRd
make_lone_dataset <- function(metacore, dataset_name) {
lifecycle::deprecate_soft(
what = "make_lone_dataset()",
when = "0.2.0"
)
lifecycle::deprecate_soft(
Comment thread
jeffreyad marked this conversation as resolved.
what = "make_lone_dataset()",
when = "0.2.0"
)
if (!(nrow(metacore$ds_spec) == 1 | !is.null(dataset_name))) {
stop("Requires either a subsetted metacore object or a dataset name", call. = FALSE)
}
Expand All @@ -44,3 +44,24 @@ make_lone_dataset <- function(metacore, dataset_name) {
}
metacore
}

#' Check if messages should be displayed
#' @param verbose Verbosity level
#' @noRd
should_message <- function(verbose) {
Comment thread
jeffreyad marked this conversation as resolved.
Outdated
verbose == "message"
}

#' Check if warnings should be displayed
#' @param verbose Verbosity level
#' @noRd
should_warn <- function(verbose) {
verbose %in% c("message", "warn")
}

#' Validate verbose parameter
#' @param verbose Verbosity level to validate
#' @noRd
validate_verbose <- function(verbose) {
match.arg(verbose, choices = c("message", "warn", "silent"))
}
Comment thread
jeffreyad marked this conversation as resolved.
Outdated
10 changes: 9 additions & 1 deletion man/build_from_derived.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 16 additions & 1 deletion man/build_qnam.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 13 additions & 1 deletion man/drop_unspec_vars.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 13 additions & 1 deletion man/set_variable_labels.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading