1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#' @rdname normalize
#' @export
unnormalize <- function(x, ...) {
UseMethod("unnormalize")
}
#' @export
unnormalize.numeric <- function(x, verbose = TRUE, ...) {
x
}
#' @rdname normalize
#' @export
unnormalize.numeric <- function(x, verbose = TRUE, ...) {
## TODO implement algorithm include_bounds = FALSE
include_bounds <- attr(x, "include_bounds")
min_value <- attr(x, "min_value")
range_difference <- attr(x, "range_difference")
to_range <- attr(x, "to_range")
if (is.null(min_value) || is.null(range_difference)) {
if (verbose) {
insight::format_warning("Can't unnormalize variable. Information about range and/or minimum value is missing.")
}
return(x)
}
if (is.null(to_range)) {
x * range_difference + min_value
} else {
(x - to_range[1]) * (range_difference / diff(to_range)) + min_value
}
}
#' @rdname normalize
#' @export
unnormalize.data.frame <- function(x,
select = NULL,
exclude = NULL,
ignore_case = FALSE,
regex = FALSE,
verbose = TRUE,
...) {
# evaluate select/exclude, may be select-helpers
select <- .select_nse(select,
x,
exclude,
ignore_case,
regex = regex,
verbose = verbose
)
x[select] <- lapply(x[select], unnormalize, verbose = verbose)
x
}
|