@@ -889,3 +889,32 @@ prompt_install <- function(pkg, reason = NULL) {
889
889
utils :: install.packages(pkg )
890
890
is_installed(pkg )
891
891
}
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