Skip to content

Commit 38b0e3f

Browse files
committed
helper for computing size
1 parent 2e08bba commit 38b0e3f

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

R/utilities.R

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -889,3 +889,32 @@ prompt_install <- function(pkg, reason = NULL) {
889889
utils::install.packages(pkg)
890890
is_installed(pkg)
891891
}
892+
893+
compute_data_size <- function(data, size, default = 0.9,
894+
target = "width",
895+
panels = c("across", "by", "ignore"),
896+
...) {
897+
898+
data[[target]] <- data[[target]] %||% size
899+
if (!is.null(data[[target]])) {
900+
return(data)
901+
}
902+
903+
var <- if (target == "height") "y" else "x"
904+
panels <- arg_match0(panels, c("across", "by", "ignore"))
905+
906+
if (panels == "across") {
907+
res <- split(data[[var]], data$PANEL, drop = FALSE)
908+
res <- vapply(res, resolution, FUN.VALUE = numeric(1), ...)
909+
res <- min(res, na.rm = TRUE)
910+
} else if (panels == "by") {
911+
res <- ave(data[[var]], data$PANEL, FUN = function(x) resolution(x, ...))
912+
} else {
913+
res <- resolution(data[[var]], ...)
914+
}
915+
if (is_quosure(default)) {
916+
default <- eval_tidy(default, data = data)
917+
}
918+
data[[target]] <- res * (default %||% 0.9)
919+
data
920+
}

0 commit comments

Comments
 (0)