From 5da2d3004953ce7beab0a287618dd39023a5f75c Mon Sep 17 00:00:00 2001 From: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> Date: Tue, 12 Sep 2023 15:19:20 +0200 Subject: [PATCH 01/21] Better scale messages (#5343) * More informative calls in constructors * Add test for scale calls * Fix call for feed-forward scales * Fix calls for gnarly default scales * Fix calls for transformation scales * Reoxygenate * Supply `call` to messages * Accept periods at ends of messages * Forward calls to checkers * Fix #4258 * `find_scale()` generates call * `xlim`/`ylim` have appropriate calls * `check_transformation()` throws more informative warning * Remove orphaned code * Deprecate `scale_name` argument * Purge `scale_name` * Test deprecation messages * Add NEWS bullet * conditionally test time scales --- NEWS.md | 5 + R/limits.R | 25 +-- R/scale-.R | 184 ++++++++++++------ R/scale-alpha.R | 11 +- R/scale-binned.R | 9 +- R/scale-brewer.R | 28 +-- R/scale-colour.R | 44 +++-- R/scale-continuous.R | 18 +- R/scale-date.R | 11 +- R/scale-discrete-.R | 4 +- R/scale-gradient.R | 36 ++-- R/scale-grey.R | 4 +- R/scale-hue.R | 28 ++- R/scale-identity.R | 18 +- R/scale-linetype.R | 4 +- R/scale-linewidth.R | 11 +- R/scale-manual.R | 6 +- R/scale-shape.R | 8 +- R/scale-size.R | 17 +- R/scale-steps.R | 16 +- R/scale-type.R | 7 +- R/scale-viridis.R | 18 +- R/zxx.R | 29 ++- man/binned_scale.Rd | 9 +- man/continuous_scale.Rd | 9 +- man/datetime_scale.Rd | 7 +- man/discrete_scale.Rd | 9 +- man/scale_discrete.Rd | 5 +- man/scale_gradient.Rd | 5 +- man/scale_grey.Rd | 5 +- man/scale_hue.Rd | 5 +- man/scale_linetype.Rd | 5 +- man/scale_manual.Rd | 5 +- man/scale_shape.Rd | 5 +- man/scale_size.Rd | 1 + man/scale_steps.Rd | 1 + tests/testthat/_snaps/scale-binned.md | 4 +- tests/testthat/_snaps/scales.md | 40 +++- tests/testthat/test-geom-dotplot.R | 2 +- tests/testthat/test-scale-colour-continuous.R | 2 +- tests/testthat/test-scale-type.R | 12 ++ tests/testthat/test-scales.R | 165 +++++++++++++++- 42 files changed, 604 insertions(+), 233 deletions(-) diff --git a/NEWS.md b/NEWS.md index 478ee5b36a..747eebf6bb 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,10 @@ # ggplot2 (development version) +* Scales throw more informative messages (@teunbrand, #4185, #4258) + +* The `scale_name` argument in `continuous_scale()`, `discrete_scale()` and + `binned_scale()` is soft-deprecated (@teunbrand, #1312). + * In `theme()`, some elements can be specified with `rel()` to inherit from `unit`-class objects in a relative fashion (@teunbrand, #3951). diff --git a/R/limits.R b/R/limits.R index daf6bd4003..727df98326 100644 --- a/R/limits.R +++ b/R/limits.R @@ -90,13 +90,13 @@ lims <- function(...) { #' @export #' @rdname lims xlim <- function(...) { - limits(c(...), "x") + limits(c(...), "x", call = current_call()) } #' @export #' @rdname lims ylim <- function(...) { - limits(c(...), "y") + limits(c(...), "y", call = current_call()) } #' Generate correct scale type for specified limits @@ -122,42 +122,45 @@ limits.numeric <- function(lims, var, call = caller_env()) { trans <- "identity" } - make_scale("continuous", var, limits = lims, trans = trans) + make_scale("continuous", var, limits = lims, trans = trans, call = call) } -make_scale <- function(type, var, ...) { - scale <- match.fun(paste("scale_", var, "_", type, sep = "")) - scale(...) +make_scale <- function(type, var, ..., call = NULL) { + name <- paste("scale_", var, "_", type, sep = "") + scale <- match.fun(name) + sc <- scale(...) + sc$call <- call %||% parse_expr(paste0(name, "()")) + sc } #' @export limits.character <- function(lims, var, call = caller_env()) { - make_scale("discrete", var, limits = lims) + make_scale("discrete", var, limits = lims, call = call) } #' @export limits.factor <- function(lims, var, call = caller_env()) { - make_scale("discrete", var, limits = as.character(lims)) + make_scale("discrete", var, limits = as.character(lims), call = call) } #' @export limits.Date <- function(lims, var, call = caller_env()) { if (length(lims) != 2) { cli::cli_abort("{.arg {var}} must be a two-element vector", call = call) } - make_scale("date", var, limits = lims) + make_scale("date", var, limits = lims, call = call) } #' @export limits.POSIXct <- function(lims, var, call = caller_env()) { if (length(lims) != 2) { cli::cli_abort("{.arg {var}} must be a two-element vector", call = call) } - make_scale("datetime", var, limits = lims) + make_scale("datetime", var, limits = lims, call = call) } #' @export limits.POSIXlt <- function(lims, var, call = caller_env()) { if (length(lims) != 2) { cli::cli_abort("{.arg {var}} must be a two-element vector", call = call) } - make_scale("datetime", var, limits = as.POSIXct(lims)) + make_scale("datetime", var, limits = as.POSIXct(lims), call = call) } #' Expand the plot limits, using data diff --git a/R/scale-.R b/R/scale-.R index 6c6fbb1c78..9a9ef4f4c9 100644 --- a/R/scale-.R +++ b/R/scale-.R @@ -3,8 +3,8 @@ #' #' @export #' @param aesthetics The names of the aesthetics that this scale works with. -#' @param scale_name The name of the scale that should be used for error messages -#' associated with this scale. +#' @param scale_name `r lifecycle::badge("deprecated")` The name of the scale +#' that should be used for error messages associated with this scale. #' @param palette A palette function that when called with a numeric vector with #' values between 0 and 1 returns the corresponding output values #' (e.g., [scales::area_pal()]). @@ -87,18 +87,24 @@ #' 0.6 units on each side for discrete variables. #' @param position For position scales, The position of the axis. #' `left` or `right` for y axes, `top` or `bottom` for x axes. +#' @param call The `call` used to construct the scale for reporting messages. #' @param super The super class to use for the constructed scale #' @keywords internal -continuous_scale <- function(aesthetics, scale_name, palette, name = waiver(), +continuous_scale <- function(aesthetics, scale_name = deprecated(), palette, name = waiver(), breaks = waiver(), minor_breaks = waiver(), n.breaks = NULL, labels = waiver(), limits = NULL, rescaler = rescale, oob = censor, expand = waiver(), na.value = NA_real_, trans = "identity", guide = "legend", position = "left", + call = caller_call(), super = ScaleContinuous) { + call <- call %||% current_call() + if (lifecycle::is_present(scale_name)) { + deprecate_soft0("3.5.0", "continuous_scale(scale_name)") + } aesthetics <- standardise_aes_names(aesthetics) - check_breaks_labels(breaks, labels) + check_breaks_labels(breaks, labels, call = call) position <- arg_match0(position, c("left", "right", "top", "bottom")) @@ -121,10 +127,9 @@ continuous_scale <- function(aesthetics, scale_name, palette, name = waiver(), minor_breaks <- allow_lambda(minor_breaks) ggproto(NULL, super, - call = match.call(), + call = call, aesthetics = aesthetics, - scale_name = scale_name, palette = palette, range = ContinuousRange$new(), @@ -177,14 +182,20 @@ continuous_scale <- function(aesthetics, scale_name, palette, name = waiver(), #' missing values be displayed as? Does not apply to position scales #' where `NA` is always placed at the far right. #' @keywords internal -discrete_scale <- function(aesthetics, scale_name, palette, name = waiver(), +discrete_scale <- function(aesthetics, scale_name = deprecated(), palette, name = waiver(), breaks = waiver(), labels = waiver(), limits = NULL, expand = waiver(), na.translate = TRUE, na.value = NA, drop = TRUE, - guide = "legend", position = "left", super = ScaleDiscrete) { + guide = "legend", position = "left", + call = caller_call(), + super = ScaleDiscrete) { + call <- call %||% current_call() + if (lifecycle::is_present(scale_name)) { + deprecate_soft0("3.5.0", "discrete_scale(scale_name)") + } aesthetics <- standardise_aes_names(aesthetics) - check_breaks_labels(breaks, labels) + check_breaks_labels(breaks, labels, call = call) # Convert formula input to function if appropriate limits <- allow_lambda(limits) @@ -195,7 +206,7 @@ discrete_scale <- function(aesthetics, scale_name, palette, name = waiver(), cli::cli_warn(c( "Continuous limits supplied to discrete scale.", "i" = "Did you mean {.code limits = factor(...)} or {.fn scale_*_continuous}?" - )) + ), call = call) } position <- arg_match0(position, c("left", "right", "top", "bottom")) @@ -206,10 +217,9 @@ discrete_scale <- function(aesthetics, scale_name, palette, name = waiver(), } ggproto(NULL, super, - call = match.call(), + call = call, aesthetics = aesthetics, - scale_name = scale_name, palette = palette, range = DiscreteRange$new(), @@ -245,16 +255,22 @@ discrete_scale <- function(aesthetics, scale_name, palette, name = waiver(), #' the left (open on the right). #' @param show.limits should the limits of the scale appear as ticks #' @keywords internal -binned_scale <- function(aesthetics, scale_name, palette, name = waiver(), +binned_scale <- function(aesthetics, scale_name = deprecated(), palette, name = waiver(), breaks = waiver(), labels = waiver(), limits = NULL, rescaler = rescale, oob = squish, expand = waiver(), na.value = NA_real_, n.breaks = NULL, nice.breaks = TRUE, right = TRUE, trans = "identity", show.limits = FALSE, - guide = "bins", position = "left", super = ScaleBinned) { + guide = "bins", position = "left", + call = caller_call(), + super = ScaleBinned) { + if (lifecycle::is_present(scale_name)) { + deprecate_soft0("3.5.0", "binned_scale(scale_name)") + } + call <- call %||% current_call() aesthetics <- standardise_aes_names(aesthetics) - check_breaks_labels(breaks, labels) + check_breaks_labels(breaks, labels, call = call) position <- arg_match0(position, c("left", "right", "top", "bottom")) @@ -275,10 +291,9 @@ binned_scale <- function(aesthetics, scale_name, palette, name = waiver(), oob <- allow_lambda(oob) ggproto(NULL, super, - call = match.call(), + call = call, aesthetics = aesthetics, - scale_name = scale_name, palette = palette, range = ContinuousRange$new(), @@ -402,9 +417,8 @@ Scale <- ggproto("Scale", NULL, call = NULL, aesthetics = aes(), - scale_name = NULL, palette = function() { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.") }, range = Range$new(), @@ -420,7 +434,7 @@ Scale <- ggproto("Scale", NULL, is_discrete = function() { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.") }, train_df = function(self, df) { @@ -434,7 +448,7 @@ Scale <- ggproto("Scale", NULL, }, train = function(self, x) { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.", call = self$call) }, reset = function(self) { @@ -459,7 +473,7 @@ Scale <- ggproto("Scale", NULL, }, transform = function(self, x) { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.", call = self$call) }, map_df = function(self, df, i = NULL) { @@ -481,11 +495,11 @@ Scale <- ggproto("Scale", NULL, }, map = function(self, x, limits = self$get_limits()) { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.", call = self$call) }, rescale = function(self, x, limits = self$get_limits(), range = self$dimension()) { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.", call = self$call) }, get_limits = function(self) { @@ -503,11 +517,11 @@ Scale <- ggproto("Scale", NULL, }, dimension = function(self, expand = expansion(0, 0), limits = self$get_limits()) { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.", call = self$call) }, get_breaks = function(self, limits = self$get_limits()) { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.", call = self$call) }, break_positions = function(self, range = self$get_limits()) { @@ -515,19 +529,19 @@ Scale <- ggproto("Scale", NULL, }, get_breaks_minor = function(self, n = 2, b = self$break_positions(), limits = self$get_limits()) { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.", call = self$call) }, get_labels = function(self, breaks = self$get_breaks()) { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.", call = self$call) }, clone = function(self) { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.", call = self$call) }, break_info = function(self, range = NULL) { - cli::cli_abort("Not implemented") + cli::cli_abort("Not implemented.", call = self$call) }, axis_order = function(self) { @@ -547,7 +561,7 @@ Scale <- ggproto("Scale", NULL, } ) -check_breaks_labels <- function(breaks, labels) { +check_breaks_labels <- function(breaks, labels, call = NULL) { if (is.null(breaks)) { return(TRUE) } @@ -558,7 +572,10 @@ check_breaks_labels <- function(breaks, labels) { bad_labels <- is.atomic(breaks) && is.atomic(labels) && length(breaks) != length(labels) if (bad_labels) { - cli::cli_abort("{.arg breaks} and {.arg labels} must have the same length") + cli::cli_abort( + "{.arg breaks} and {.arg labels} must have the same length", + call = call + ) } TRUE @@ -566,8 +583,7 @@ check_breaks_labels <- function(breaks, labels) { default_transform <- function(self, x) { new_x <- self$trans$transform(x) - axis <- if ("x" %in% self$aesthetics) "x" else "y" - check_transformation(x, new_x, self$scale_name, axis) + check_transformation(x, new_x, self$trans$name, self$call) new_x } @@ -595,6 +611,14 @@ ScaleContinuous <- ggproto("ScaleContinuous", Scale, if (length(x) == 0) { return() } + # Intercept error here to give examples and mention scale in call + if (is.factor(x) || !typeof(x) %in% c("integer", "double")) { + cli::cli_abort( + c("Discrete values supplied to continuous scale", + i = "Example values: {.and {.val {head(x, 5)}}}"), + call = self$call + ) + } self$range$train(x) }, @@ -661,7 +685,10 @@ ScaleContinuous <- ggproto("ScaleContinuous", Scale, } if (identical(self$breaks, NA)) { - cli::cli_abort("Invalid {.arg breaks} specification. Use {.val NULL}, not {.val NA}") + cli::cli_abort( + "Invalid {.arg breaks} specification. Use {.val NULL}, not {.val NA}.", + call = self$call + ) } if (zero_range(as.numeric(limits))) { @@ -671,7 +698,10 @@ ScaleContinuous <- ggproto("ScaleContinuous", Scale, breaks <- self$trans$breaks(limits, self$n.breaks) } else { if (!is.null(self$n.breaks)) { - cli::cli_warn("Ignoring {.arg n.breaks}. Use a {.cls trans} object that supports setting number of breaks") + cli::cli_warn( + "Ignoring {.arg n.breaks}. Use a {.cls trans} object that supports setting number of breaks.", + call = self$call + ) } breaks <- self$trans$breaks(limits) } @@ -699,7 +729,10 @@ ScaleContinuous <- ggproto("ScaleContinuous", Scale, } if (identical(self$minor_breaks, NA)) { - cli::cli_abort("Invalid {.arg minor_breaks} specification. Use {.val NULL}, not {.val NA}") + cli::cli_abort( + "Invalid {.arg minor_breaks} specification. Use {.val NULL}, not {.val NA}.", + call = self$call + ) } if (is.waive(self$minor_breaks)) { @@ -732,7 +765,10 @@ ScaleContinuous <- ggproto("ScaleContinuous", Scale, } if (identical(self$labels, NA)) { - cli::cli_abort("Invalid {.arg labels} specification. Use {.val NULL}, not {.val NA}") + cli::cli_abort( + "Invalid {.arg labels} specification. Use {.val NULL}, not {.val NA}.", + call = self$call + ) } if (is.waive(self$labels)) { @@ -744,7 +780,10 @@ ScaleContinuous <- ggproto("ScaleContinuous", Scale, } if (length(labels) != length(breaks)) { - cli::cli_abort("{.arg breaks} and {.arg labels} are different lengths") + cli::cli_abort( + "{.arg breaks} and {.arg labels} are different lengths.", + call = self$call + ) } if (is.list(labels)) { # Guard against list with empty elements @@ -830,6 +869,14 @@ ScaleDiscrete <- ggproto("ScaleDiscrete", Scale, if (length(x) == 0) { return() } + # Intercept error here to give examples and mention scale in call + if (!is.discrete(x)) { + cli::cli_abort( + c("Continuous values supplied to discrete scale", + i = "Example values: {.and {.val {head(x, 5)}}}"), + call = self$call + ) + } self$range$train(x, drop = self$drop, na.rm = !self$na.translate) }, @@ -841,7 +888,10 @@ ScaleDiscrete <- ggproto("ScaleDiscrete", Scale, pal <- self$palette.cache } else { if (!is.null(self$n.breaks.cache)) { - cli::cli_warn("Cached palette does not match requested") + cli::cli_warn( + "Cached palette does not match requested.", + call = self$call + ) } pal <- self$palette(n) self$palette.cache <- pal @@ -885,7 +935,10 @@ ScaleDiscrete <- ggproto("ScaleDiscrete", Scale, } if (identical(self$breaks, NA)) { - cli::cli_abort("Invalid {.arg breaks} specification. Use {.val NULL}, not {.val NA}") + cli::cli_abort( + "Invalid {.arg breaks} specification. Use {.val NULL}, not {.val NA}.", + call = self$call + ) } if (is.waive(self$breaks)) { @@ -917,7 +970,10 @@ ScaleDiscrete <- ggproto("ScaleDiscrete", Scale, } if (identical(self$labels, NA)) { - cli::cli_abort("Invalid {.arg labels} specification. Use {.val NULL}, not {.val NA}") + cli::cli_abort( + "Invalid {.arg labels} specification. Use {.val NULL}, not {.val NA}.", + call = self$call + ) } if (is.waive(self$labels)) { @@ -1004,7 +1060,10 @@ ScaleBinned <- ggproto("ScaleBinned", Scale, train = function(self, x) { if (!is.numeric(x)) { - cli::cli_abort("Binned scales only support continuous data") + cli::cli_abort( + "Binned scales only support continuous data.", + call = self$call + ) } if (length(x) == 0) { @@ -1071,14 +1130,20 @@ ScaleBinned <- ggproto("ScaleBinned", Scale, if (is.null(self$breaks)) { return(NULL) } else if (identical(self$breaks, NA)) { - cli::cli_abort("Invalid {.arg breaks} specification. Use {.val NULL}, not {.val NA}") + cli::cli_abort( + "Invalid {.arg breaks} specification. Use {.val NULL}, not {.val NA}.", + call = self$call + ) } else if (is.waive(self$breaks)) { if (self$nice.breaks) { if (!is.null(self$n.breaks) && trans_support_nbreaks(self$trans)) { breaks <- self$trans$breaks(limits, n = self$n.breaks) } else { if (!is.null(self$n.breaks)) { - cli::cli_warn("Ignoring {.arg n.breaks}. Use a {.cls trans} object that supports setting number of breaks") + cli::cli_warn( + "Ignoring {.arg n.breaks}. Use a {.cls trans} object that supports setting number of breaks.", + call = self$call + ) } breaks <- self$trans$breaks(limits) } @@ -1125,7 +1190,10 @@ ScaleBinned <- ggproto("ScaleBinned", Scale, breaks <- self$breaks(limits, n.breaks = n.breaks) } else { if (!is.null(self$n.breaks)) { - cli::cli_warn("Ignoring {.arg n.breaks}. Use a breaks function that supports setting number of breaks") + cli::cli_warn( + "Ignoring {.arg n.breaks}. Use a breaks function that supports setting number of breaks.", + call = self$call + ) } breaks <- self$breaks(limits) } @@ -1151,7 +1219,10 @@ ScaleBinned <- ggproto("ScaleBinned", Scale, if (is.null(self$labels)) { return(NULL) } else if (identical(self$labels, NA)) { - cli::cli_abort("Invalid {.arg labels} specification. Use {.val NULL}, not {.val NA}") + cli::cli_abort( + "Invalid {.arg labels} specification. Use {.val NULL}, not {.val NA}.", + call = self$call + ) } else if (is.waive(self$labels)) { labels <- self$trans$format(breaks) } else if (is.function(self$labels)) { @@ -1160,7 +1231,10 @@ ScaleBinned <- ggproto("ScaleBinned", Scale, labels <- self$labels } if (length(labels) != length(breaks)) { - cli::cli_abort("{.arg breaks} and {.arg labels} are different lengths") + cli::cli_abort( + "{.arg breaks} and {.arg labels} are different lengths.", + call = self$call + ) } labels }, @@ -1210,16 +1284,12 @@ scale_flip_position <- function(scale) { invisible() } -check_transformation <- function(x, transformed, name, axis) { +check_transformation <- function(x, transformed, name, call = NULL) { if (any(is.finite(x) != is.finite(transformed))) { - type <- if (name == "position_b") { - "binned" - } else if (name == "position_c") { - "continuous" - } else { - "discrete" - } - cli::cli_warn("Transformation introduced infinite values in {type} {axis}-axis") + cli::cli_warn( + "{.field {name}} transformation introduced infinite values.", + call = call + ) } } diff --git a/R/scale-alpha.R b/R/scale-alpha.R index d44eb40c9f..8be2925c58 100644 --- a/R/scale-alpha.R +++ b/R/scale-alpha.R @@ -24,7 +24,7 @@ #' p + scale_alpha("cylinders") #' p + scale_alpha(range = c(0.4, 0.8)) scale_alpha <- function(..., range = c(0.1, 1)) { - continuous_scale("alpha", "alpha_c", rescale_pal(range), ...) + continuous_scale("alpha", palette = rescale_pal(range), ...) } #' @rdname scale_alpha @@ -34,14 +34,16 @@ scale_alpha_continuous <- scale_alpha #' @rdname scale_alpha #' @export scale_alpha_binned <- function(..., range = c(0.1, 1)) { - binned_scale("alpha", "alpha_b", rescale_pal(range), ...) + binned_scale("alpha", palette = rescale_pal(range), ...) } #' @rdname scale_alpha #' @export scale_alpha_discrete <- function(...) { cli::cli_warn("Using alpha for a discrete variable is not advised.") - scale_alpha_ordinal(...) + args <- list2(...) + args$call <- args$call %||% current_call() + exec(scale_alpha_ordinal, !!!args) } #' @rdname scale_alpha @@ -49,8 +51,7 @@ scale_alpha_discrete <- function(...) { scale_alpha_ordinal <- function(..., range = c(0.1, 1)) { discrete_scale( "alpha", - "alpha_d", - function(n) seq(range[1], range[2], length.out = n), + palette = function(n) seq(range[1], range[2], length.out = n), ... ) } diff --git a/R/scale-binned.R b/R/scale-binned.R index 161691c3c0..1fb5444696 100644 --- a/R/scale-binned.R +++ b/R/scale-binned.R @@ -30,7 +30,7 @@ scale_x_binned <- function(name = waiver(), n.breaks = 10, nice.breaks = TRUE, guide = waiver(), position = "bottom") { binned_scale( ggplot_global$x_aes, - scale_name = "position_b", palette = identity, name = name, breaks = breaks, + palette = identity, name = name, breaks = breaks, labels = labels, limits = limits, expand = expand, oob = oob, na.value = na.value, n.breaks = n.breaks, nice.breaks = nice.breaks, right = right, trans = trans, show.limits = show.limits, guide = guide, position = position, super = ScaleBinnedPosition @@ -47,7 +47,7 @@ scale_y_binned <- function(name = waiver(), n.breaks = 10, nice.breaks = TRUE, guide = waiver(), position = "left") { binned_scale( ggplot_global$y_aes, - scale_name = "position_b", palette = identity, name = name, breaks = breaks, + palette = identity, name = name, breaks = breaks, labels = labels, limits = limits, expand = expand, oob = oob, na.value = na.value, n.breaks = n.breaks, nice.breaks = nice.breaks, right = right, trans = trans, show.limits = show.limits, guide = guide, position = position, super = ScaleBinnedPosition @@ -63,7 +63,10 @@ ScaleBinnedPosition <- ggproto("ScaleBinnedPosition", ScaleBinned, train = function(self, x) { if (!is.numeric(x)) { - cli::cli_abort("Binned scales only support continuous data") + cli::cli_abort( + "Binned scales only support continuous data.", + call = self$call + ) } if (length(x) == 0 || self$after.stat) return() diff --git a/R/scale-brewer.R b/R/scale-brewer.R index 2bf583961a..b3d48ab820 100644 --- a/R/scale-brewer.R +++ b/R/scale-brewer.R @@ -83,13 +83,13 @@ #' v + scale_fill_fermenter() #' scale_colour_brewer <- function(..., type = "seq", palette = 1, direction = 1, aesthetics = "colour") { - discrete_scale(aesthetics, "brewer", brewer_pal(type, palette, direction), ...) + discrete_scale(aesthetics, palette = brewer_pal(type, palette, direction), ...) } #' @export #' @rdname scale_brewer scale_fill_brewer <- function(..., type = "seq", palette = 1, direction = 1, aesthetics = "fill") { - discrete_scale(aesthetics, "brewer", brewer_pal(type, palette, direction), ...) + discrete_scale(aesthetics, palette = brewer_pal(type, palette, direction), ...) } #' @export @@ -103,8 +103,11 @@ scale_colour_distiller <- function(..., type = "seq", palette = 1, direction = - "i" = "Consider using {.code type = \"seq\"} or {.code type = \"div\"} instead" )) } - continuous_scale(aesthetics, "distiller", - gradient_n_pal(brewer_pal(type, palette, direction)(7), values, space), na.value = na.value, guide = guide, ...) + continuous_scale( + aesthetics, + palette = gradient_n_pal(brewer_pal(type, palette, direction)(7), values, space), + na.value = na.value, guide = guide, ... + ) # NB: 6-7 colours per palette gives nice gradients; more results in more saturated colours which do not look as good # For diverging scales, you need an odd number to make sure the mid-point is in the center } @@ -119,8 +122,11 @@ scale_fill_distiller <- function(..., type = "seq", palette = 1, direction = -1, "i" = "Consider using {.code type = \"seq\"} or {.code type = \"div\"} instead" )) } - continuous_scale(aesthetics, "distiller", - gradient_n_pal(brewer_pal(type, palette, direction)(7), values, space), na.value = na.value, guide = guide, ...) + continuous_scale( + aesthetics, + palette = gradient_n_pal(brewer_pal(type, palette, direction)(7), values, space), + na.value = na.value, guide = guide, ... + ) } #' @export @@ -134,7 +140,7 @@ scale_colour_fermenter <- function(..., type = "seq", palette = 1, direction = - "i" = "Consider using {.code type = \"seq\"} or {.code type = \"div\"} instead" )) } - binned_scale(aesthetics, "fermenter", binned_pal(brewer_pal(type, palette, direction)), na.value = na.value, guide = guide, ...) + binned_scale(aesthetics, palette = binned_pal(brewer_pal(type, palette, direction)), na.value = na.value, guide = guide, ...) } #' @export @@ -147,11 +153,5 @@ scale_fill_fermenter <- function(..., type = "seq", palette = 1, direction = -1, "i" = "Consider using {.code type = \"seq\"} or {.code type = \"div\"} instead" )) } - binned_scale(aesthetics, "fermenter", binned_pal(brewer_pal(type, palette, direction)), na.value = na.value, guide = guide, ...) + binned_scale(aesthetics, palette = binned_pal(brewer_pal(type, palette, direction)), na.value = na.value, guide = guide, ...) } - -# icon.brewer <- function() { -# rectGrob(c(0.1, 0.3, 0.5, 0.7, 0.9), width = 0.21, -# gp = gpar(fill = RColorBrewer::brewer.pal(5, "PuOr"), col = NA) -# ) -# } diff --git a/R/scale-colour.R b/R/scale-colour.R index c063f9efa9..a3084ec7df 100644 --- a/R/scale-colour.R +++ b/R/scale-colour.R @@ -78,13 +78,18 @@ scale_colour_continuous <- function(..., type = getOption("ggplot2.continuous.colour")) { type <- type %||% "gradient" + args <- list2(...) + args$call <- args$call %||% current_call() if (is.function(type)) { - check_scale_type(type(...), "scale_colour_continuous", "colour") + if (!any(c("...", "call") %in% fn_fmls_names(type))) { + args$call <- NULL + } + check_scale_type(exec(type, !!!args), "scale_colour_continuous", "colour") } else if (identical(type, "gradient")) { - scale_colour_gradient(...) + exec(scale_colour_gradient, !!!args) } else if (identical(type, "viridis")) { - scale_colour_viridis_c(...) + exec(scale_colour_viridis_c, !!!args) } else { cli::cli_abort(c( "Unknown scale type: {.val {type}}", @@ -98,13 +103,18 @@ scale_colour_continuous <- function(..., scale_fill_continuous <- function(..., type = getOption("ggplot2.continuous.fill")) { type <- type %||% "gradient" + args <- list2(...) + args$call <- args$call %||% current_call() if (is.function(type)) { - check_scale_type(type(...), "scale_fill_continuous", "fill") + if (!any(c("...", "call") %in% fn_fmls_names(type))) { + args$call <- NULL + } + check_scale_type(exec(type, !!!args), "scale_fill_continuous", "fill") } else if (identical(type, "gradient")) { - scale_fill_gradient(...) + exec(scale_fill_gradient, !!!args) } else if (identical(type, "viridis")) { - scale_fill_viridis_c(...) + exec(scale_fill_viridis_c, !!!args) } else { cli::cli_abort(c( "Unknown scale type: {.val {type}}", @@ -117,8 +127,13 @@ scale_fill_continuous <- function(..., #' @rdname scale_colour_continuous scale_colour_binned <- function(..., type = getOption("ggplot2.binned.colour")) { + args <- list2(...) + args$call <- args$call %||% current_call() if (is.function(type)) { - check_scale_type(type(...), "scale_colour_binned", "colour") + if (!any(c("...", "call") %in% fn_fmls_names(type))) { + args$call <- NULL + } + check_scale_type(exec(type, !!!args), "scale_colour_binned", "colour") } else { type_fallback <- getOption("ggplot2.continuous.colour", default = "gradient") # don't use fallback from scale_colour_continuous() if it is @@ -130,9 +145,9 @@ scale_colour_binned <- function(..., type <- type %||% type_fallback if (identical(type, "gradient")) { - scale_colour_steps(...) + exec(scale_colour_steps, !!!args) } else if (identical(type, "viridis")) { - scale_colour_viridis_b(...) + exec(scale_colour_viridis_b, !!!args) } else { cli::cli_abort(c( "Unknown scale type: {.val {type}}", @@ -146,8 +161,13 @@ scale_colour_binned <- function(..., #' @rdname scale_colour_continuous scale_fill_binned <- function(..., type = getOption("ggplot2.binned.fill")) { + args <- list2(...) + args$call <- args$call %||% current_call() if (is.function(type)) { - check_scale_type(type(...), "scale_fill_binned", "fill") + if (!any(c("...", "call") %in% fn_fmls_names(type))) { + args$call <- NULL + } + check_scale_type(exec(type, !!!args), "scale_fill_binned", "fill") } else { type_fallback <- getOption("ggplot2.continuous.fill", default = "gradient") # don't use fallback from scale_colour_continuous() if it is @@ -159,9 +179,9 @@ scale_fill_binned <- function(..., type <- type %||% type_fallback if (identical(type, "gradient")) { - scale_fill_steps(...) + exec(scale_fill_steps, !!!args) } else if (identical(type, "viridis")) { - scale_fill_viridis_b(...) + exec(scale_fill_viridis_b, !!!args) } else { cli::cli_abort(c( "Unknown scale type: {.val {type}}", diff --git a/R/scale-continuous.R b/R/scale-continuous.R index 79939d1ee1..73b026a678 100644 --- a/R/scale-continuous.R +++ b/R/scale-continuous.R @@ -84,12 +84,17 @@ scale_x_continuous <- function(name = waiver(), breaks = waiver(), na.value = NA_real_, trans = "identity", guide = waiver(), position = "bottom", sec.axis = waiver()) { + call <- caller_call() + if (is.null(call) || !startsWith(as.character(call[[1]]), "scale_")) { + call <- current_call() + } sc <- continuous_scale( ggplot_global$x_aes, - "position_c", identity, name = name, breaks = breaks, n.breaks = n.breaks, + palette = identity, name = name, breaks = breaks, n.breaks = n.breaks, minor_breaks = minor_breaks, labels = labels, limits = limits, expand = expand, oob = oob, na.value = na.value, trans = trans, - guide = guide, position = position, super = ScaleContinuousPosition + guide = guide, position = position, call = call, + super = ScaleContinuousPosition ) set_sec_axis(sec.axis, sc) @@ -105,12 +110,17 @@ scale_y_continuous <- function(name = waiver(), breaks = waiver(), na.value = NA_real_, trans = "identity", guide = waiver(), position = "left", sec.axis = waiver()) { + call <- caller_call() + if (is.null(call) || !startsWith(as.character(call[[1]]), "scale_")) { + call <- current_call() + } sc <- continuous_scale( ggplot_global$y_aes, - "position_c", identity, name = name, breaks = breaks, n.breaks = n.breaks, + palette = identity, name = name, breaks = breaks, n.breaks = n.breaks, minor_breaks = minor_breaks, labels = labels, limits = limits, expand = expand, oob = oob, na.value = na.value, trans = trans, - guide = guide, position = position, super = ScaleContinuousPosition + guide = guide, position = position, call = call, + super = ScaleContinuousPosition ) set_sec_axis(sec.axis, sc) diff --git a/R/scale-date.R b/R/scale-date.R index 5d3dcb4de0..8c20532599 100644 --- a/R/scale-date.R +++ b/R/scale-date.R @@ -293,8 +293,8 @@ datetime_scale <- function(aesthetics, trans, palette, labels = waiver(), date_breaks = waiver(), date_labels = waiver(), date_minor_breaks = waiver(), timezone = NULL, - guide = "legend", ...) { - + guide = "legend", call = caller_call(), ...) { + call <- call %||% current_call() # Backward compatibility if (is.character(breaks)) breaks <- breaks_width(breaks) @@ -313,11 +313,6 @@ datetime_scale <- function(aesthetics, trans, palette, } } - name <- switch(trans, - date = "date", - time = "datetime" - ) - # x/y position aesthetics should use ScaleContinuousDate or # ScaleContinuousDatetime; others use ScaleContinuous if (all(aesthetics %in% c("x", "xmin", "xmax", "xend", "y", "ymin", "ymax", "yend"))) { @@ -337,13 +332,13 @@ datetime_scale <- function(aesthetics, trans, palette, sc <- continuous_scale( aesthetics, - name, palette = palette, breaks = breaks, minor_breaks = minor_breaks, labels = labels, guide = guide, trans = trans, + call = call, ..., super = scale_class ) diff --git a/R/scale-discrete-.R b/R/scale-discrete-.R index 25931f3d7e..339df10122 100644 --- a/R/scale-discrete-.R +++ b/R/scale-discrete-.R @@ -62,7 +62,7 @@ #' scale_x_discrete(labels = abbreviate) #' } scale_x_discrete <- function(..., expand = waiver(), guide = waiver(), position = "bottom") { - sc <- discrete_scale(c("x", "xmin", "xmax", "xend"), "position_d", identity, ..., + sc <- discrete_scale(c("x", "xmin", "xmax", "xend"), palette = identity, ..., expand = expand, guide = guide, position = position, super = ScaleDiscretePosition) sc$range_c <- ContinuousRange$new() @@ -71,7 +71,7 @@ scale_x_discrete <- function(..., expand = waiver(), guide = waiver(), position #' @rdname scale_discrete #' @export scale_y_discrete <- function(..., expand = waiver(), guide = waiver(), position = "left") { - sc <- discrete_scale(c("y", "ymin", "ymax", "yend"), "position_d", identity, ..., + sc <- discrete_scale(c("y", "ymin", "ymax", "yend"), palette = identity, ..., expand = expand, guide = guide, position = position, super = ScaleDiscretePosition) sc$range_c <- ContinuousRange$new() diff --git a/R/scale-gradient.R b/R/scale-gradient.R index a2cce5b8a3..95ee2824b2 100644 --- a/R/scale-gradient.R +++ b/R/scale-gradient.R @@ -77,7 +77,7 @@ #' scale_colour_gradient <- function(..., low = "#132B43", high = "#56B1F7", space = "Lab", na.value = "grey50", guide = "colourbar", aesthetics = "colour") { - continuous_scale(aesthetics, "gradient", seq_gradient_pal(low, high, space), + continuous_scale(aesthetics, palette = seq_gradient_pal(low, high, space), na.value = na.value, guide = guide, ...) } @@ -85,7 +85,7 @@ scale_colour_gradient <- function(..., low = "#132B43", high = "#56B1F7", space #' @export scale_fill_gradient <- function(..., low = "#132B43", high = "#56B1F7", space = "Lab", na.value = "grey50", guide = "colourbar", aesthetics = "fill") { - continuous_scale(aesthetics, "gradient", seq_gradient_pal(low, high, space), + continuous_scale(aesthetics, palette = seq_gradient_pal(low, high, space), na.value = na.value, guide = guide, ...) } @@ -97,9 +97,12 @@ scale_fill_gradient <- function(..., low = "#132B43", high = "#56B1F7", space = scale_colour_gradient2 <- function(..., low = muted("red"), mid = "white", high = muted("blue"), midpoint = 0, space = "Lab", na.value = "grey50", guide = "colourbar", aesthetics = "colour") { - continuous_scale(aesthetics, "gradient2", - div_gradient_pal(low, mid, high, space), na.value = na.value, guide = guide, ..., - rescaler = mid_rescaler(mid = midpoint)) + continuous_scale( + aesthetics, + palette = div_gradient_pal(low, mid, high, space), + na.value = na.value, guide = guide, ..., + rescaler = mid_rescaler(mid = midpoint) + ) } #' @rdname scale_gradient @@ -107,9 +110,12 @@ scale_colour_gradient2 <- function(..., low = muted("red"), mid = "white", high scale_fill_gradient2 <- function(..., low = muted("red"), mid = "white", high = muted("blue"), midpoint = 0, space = "Lab", na.value = "grey50", guide = "colourbar", aesthetics = "fill") { - continuous_scale(aesthetics, "gradient2", - div_gradient_pal(low, mid, high, space), na.value = na.value, guide = guide, ..., - rescaler = mid_rescaler(mid = midpoint)) + continuous_scale( + aesthetics, + palette = div_gradient_pal(low, mid, high, space), + na.value = na.value, guide = guide, ..., + rescaler = mid_rescaler(mid = midpoint) + ) } mid_rescaler <- function(mid) { @@ -126,8 +132,11 @@ scale_colour_gradientn <- function(..., colours, values = NULL, space = "Lab", n guide = "colourbar", aesthetics = "colour", colors) { colours <- if (missing(colours)) colors else colours - continuous_scale(aesthetics, "gradientn", - gradient_n_pal(colours, values, space), na.value = na.value, guide = guide, ...) + continuous_scale( + aesthetics, + palette = gradient_n_pal(colours, values, space), + na.value = na.value, guide = guide, ... + ) } #' @rdname scale_gradient #' @export @@ -135,6 +144,9 @@ scale_fill_gradientn <- function(..., colours, values = NULL, space = "Lab", na. guide = "colourbar", aesthetics = "fill", colors) { colours <- if (missing(colours)) colors else colours - continuous_scale(aesthetics, "gradientn", - gradient_n_pal(colours, values, space), na.value = na.value, guide = guide, ...) + continuous_scale( + aesthetics, + palette = gradient_n_pal(colours, values, space), + na.value = na.value, guide = guide, ... + ) } diff --git a/R/scale-grey.R b/R/scale-grey.R index 4289d3690f..c71dd444ef 100644 --- a/R/scale-grey.R +++ b/R/scale-grey.R @@ -28,13 +28,13 @@ #' geom_point(aes(colour = miss)) + #' scale_colour_grey(na.value = "green") scale_colour_grey <- function(..., start = 0.2, end = 0.8, na.value = "red", aesthetics = "colour") { - discrete_scale(aesthetics, "grey", grey_pal(start, end), + discrete_scale(aesthetics, palette = grey_pal(start, end), na.value = na.value, ...) } #' @rdname scale_grey #' @export scale_fill_grey <- function(..., start = 0.2, end = 0.8, na.value = "red", aesthetics = "fill") { - discrete_scale(aesthetics, "grey", grey_pal(start, end), + discrete_scale(aesthetics, palette = grey_pal(start, end), na.value = na.value, ...) } diff --git a/R/scale-hue.R b/R/scale-hue.R index 1bcda70773..0e0d796537 100644 --- a/R/scale-hue.R +++ b/R/scale-hue.R @@ -55,7 +55,7 @@ #' } scale_colour_hue <- function(..., h = c(0, 360) + 15, c = 100, l = 65, h.start = 0, direction = 1, na.value = "grey50", aesthetics = "colour") { - discrete_scale(aesthetics, "hue", hue_pal(h, c, l, h.start, direction), + discrete_scale(aesthetics, palette = hue_pal(h, c, l, h.start, direction), na.value = na.value, ...) } @@ -63,7 +63,7 @@ scale_colour_hue <- function(..., h = c(0, 360) + 15, c = 100, l = 65, h.start = #' @export scale_fill_hue <- function(..., h = c(0, 360) + 15, c = 100, l = 65, h.start = 0, direction = 1, na.value = "grey50", aesthetics = "fill") { - discrete_scale(aesthetics, "hue", hue_pal(h, c, l, h.start, direction), + discrete_scale(aesthetics, palette = hue_pal(h, c, l, h.start, direction), na.value = na.value, ...) } @@ -124,15 +124,21 @@ scale_fill_hue <- function(..., h = c(0, 360) + 15, c = 100, l = 65, h.start = 0 scale_colour_discrete <- function(..., type = getOption("ggplot2.discrete.colour")) { # TODO: eventually `type` should default to a set of colour-blind safe color codes (e.g. Okabe-Ito) type <- type %||% scale_colour_hue + args <- list2(...) + args$call <- args$call %||% current_call() + if (is.function(type)) { + if (!any(c("...", "call") %in% fn_fmls_names(type))) { + args$call <- NULL + } check_scale_type( - type(...), + exec(type, !!!args), "scale_colour_discrete", "colour", scale_is_discrete = TRUE ) } else { - scale_colour_qualitative(..., type = type) + exec(scale_colour_qualitative, !!!args, type = type) } } @@ -141,22 +147,28 @@ scale_colour_discrete <- function(..., type = getOption("ggplot2.discrete.colour scale_fill_discrete <- function(..., type = getOption("ggplot2.discrete.fill")) { # TODO: eventually `type` should default to a set of colour-blind safe color codes (e.g. Okabe-Ito) type <- type %||% scale_fill_hue + args <- list2(...) + args$call <- args$call %||% current_call() + if (is.function(type)) { + if (!any(c("...", "call") %in% fn_fmls_names(type))) { + args$call <- NULL + } check_scale_type( - type(...), + exec(type, !!!args), "scale_fill_discrete", "fill", scale_is_discrete = TRUE ) } else { - scale_fill_qualitative(..., type = type) + exec(scale_fill_qualitative, !!!args, type = type) } } scale_colour_qualitative <- function(..., type = NULL, h = c(0, 360) + 15, c = 100, l = 65, h.start = 0, direction = 1, na.value = "grey50", aesthetics = "colour") { discrete_scale( - aesthetics, "qualitative", qualitative_pal(type, h, c, l, h.start, direction), + aesthetics, palette = qualitative_pal(type, h, c, l, h.start, direction), na.value = na.value, ... ) } @@ -164,7 +176,7 @@ scale_colour_qualitative <- function(..., type = NULL, h = c(0, 360) + 15, c = 1 scale_fill_qualitative <- function(..., type = NULL, h = c(0, 360) + 15, c = 100, l = 65, h.start = 0, direction = 1, na.value = "grey50", aesthetics = "fill") { discrete_scale( - aesthetics, "qualitative", qualitative_pal(type, h, c, l, h.start, direction), + aesthetics, palette = qualitative_pal(type, h, c, l, h.start, direction), na.value = na.value, ... ) } diff --git a/R/scale-identity.R b/R/scale-identity.R index 336083a6a2..9a3ace41a0 100644 --- a/R/scale-identity.R +++ b/R/scale-identity.R @@ -63,7 +63,7 @@ NULL #' @rdname scale_identity #' @export scale_colour_identity <- function(..., guide = "none", aesthetics = "colour") { - sc <- discrete_scale(aesthetics, "identity", identity_pal(), ..., guide = guide, + sc <- discrete_scale(aesthetics, palette = identity_pal(), ..., guide = guide, super = ScaleDiscreteIdentity) sc @@ -72,7 +72,7 @@ scale_colour_identity <- function(..., guide = "none", aesthetics = "colour") { #' @rdname scale_identity #' @export scale_fill_identity <- function(..., guide = "none", aesthetics = "fill") { - sc <- discrete_scale(aesthetics, "identity", identity_pal(), ..., guide = guide, + sc <- discrete_scale(aesthetics, palette = identity_pal(), ..., guide = guide, super = ScaleDiscreteIdentity) sc @@ -83,7 +83,7 @@ scale_fill_identity <- function(..., guide = "none", aesthetics = "fill") { #' Other shape scales: [scale_shape()], [scale_shape_manual()]. #' @export scale_shape_identity <- function(..., guide = "none") { - sc <- continuous_scale("shape", "identity", identity_pal(), ..., guide = guide, + sc <- continuous_scale("shape", palette = identity_pal(), ..., guide = guide, super = ScaleContinuousIdentity) sc @@ -94,7 +94,7 @@ scale_shape_identity <- function(..., guide = "none") { #' Other linetype scales: [scale_linetype()], [scale_linetype_manual()]. #' @export scale_linetype_identity <- function(..., guide = "none") { - sc <- discrete_scale("linetype", "identity", identity_pal(), ..., guide = guide, + sc <- discrete_scale("linetype", palette = identity_pal(), ..., guide = guide, super = ScaleDiscreteIdentity) sc @@ -105,7 +105,7 @@ scale_linetype_identity <- function(..., guide = "none") { #' Other alpha scales: [scale_alpha()], [scale_alpha_manual()]. #' @export scale_linewidth_identity <- function(..., guide = "none") { - sc <- continuous_scale("linewidth", "identity", identity_pal(), ..., + sc <- continuous_scale("linewidth", palette = identity_pal(), ..., guide = guide, super = ScaleContinuousIdentity) sc @@ -114,7 +114,7 @@ scale_linewidth_identity <- function(..., guide = "none") { #' @rdname scale_identity #' @export scale_alpha_identity <- function(..., guide = "none") { - sc <- continuous_scale("alpha", "identity", identity_pal(), ..., guide = guide, + sc <- continuous_scale("alpha", palette = identity_pal(), ..., guide = guide, super = ScaleContinuousIdentity) sc @@ -125,7 +125,7 @@ scale_alpha_identity <- function(..., guide = "none") { #' Other size scales: [scale_size()], [scale_size_manual()]. #' @export scale_size_identity <- function(..., guide = "none") { - sc <- continuous_scale("size", "identity", identity_pal(), ..., guide = guide, + sc <- continuous_scale("size", palette = identity_pal(), ..., guide = guide, super = ScaleContinuousIdentity) sc @@ -134,7 +134,7 @@ scale_size_identity <- function(..., guide = "none") { #' @rdname scale_identity #' @export scale_discrete_identity <- function(aesthetics, ..., guide = "none") { - sc <- discrete_scale(aesthetics, "identity", identity_pal(), ..., guide = guide, + sc <- discrete_scale(aesthetics, palette = identity_pal(), ..., guide = guide, super = ScaleDiscreteIdentity) sc @@ -143,7 +143,7 @@ scale_discrete_identity <- function(aesthetics, ..., guide = "none") { #' @rdname scale_identity #' @export scale_continuous_identity <- function(aesthetics, ..., guide = "none") { - sc <- continuous_scale(aesthetics, "identity", identity_pal(), ..., guide = guide, + sc <- continuous_scale(aesthetics, palette = identity_pal(), ..., guide = guide, super = ScaleContinuousIdentity) sc diff --git a/R/scale-linetype.R b/R/scale-linetype.R index 54d0eb1360..494abc5d55 100644 --- a/R/scale-linetype.R +++ b/R/scale-linetype.R @@ -34,14 +34,14 @@ #' facet_grid(linetype ~ .) + #' theme_void(20) scale_linetype <- function(..., na.value = "blank") { - discrete_scale("linetype", "linetype_d", linetype_pal(), + discrete_scale("linetype", palette = linetype_pal(), na.value = na.value, ...) } #' @rdname scale_linetype #' @export scale_linetype_binned <- function(..., na.value = "blank") { - binned_scale("linetype", "linetype_b", binned_pal(linetype_pal()), ...) + binned_scale("linetype", palette = binned_pal(linetype_pal()), ...) } #' @rdname scale_linetype diff --git a/R/scale-linewidth.R b/R/scale-linewidth.R index 9a550439a7..61f4dc1c0c 100644 --- a/R/scale-linewidth.R +++ b/R/scale-linewidth.R @@ -31,7 +31,7 @@ scale_linewidth_continuous <- function(name = waiver(), breaks = waiver(), labels = waiver(), limits = NULL, range = c(1, 6), trans = "identity", guide = "legend") { - continuous_scale("linewidth", "linewidth_c", rescale_pal(range), name = name, + continuous_scale("linewidth", palette = rescale_pal(range), name = name, breaks = breaks, labels = labels, limits = limits, trans = trans, guide = guide) } @@ -45,7 +45,7 @@ scale_linewidth <- scale_linewidth_continuous scale_linewidth_binned <- function(name = waiver(), breaks = waiver(), labels = waiver(), limits = NULL, range = c(1, 6), n.breaks = NULL, nice.breaks = TRUE, trans = "identity", guide = "bins") { - binned_scale("linewidth", "linewidth_b", rescale_pal(range), name = name, + binned_scale("linewidth", palette = rescale_pal(range), name = name, breaks = breaks, labels = labels, limits = limits, trans = trans, n.breaks = n.breaks, nice.breaks = nice.breaks, guide = guide) } @@ -55,7 +55,9 @@ scale_linewidth_binned <- function(name = waiver(), breaks = waiver(), labels = #' @usage NULL scale_linewidth_discrete <- function(...) { cli::cli_warn("Using {.field linewidth} for a discrete variable is not advised.") - scale_linewidth_ordinal(...) + args <- list2(...) + args$call <- args$call %||% current_call() + exec(scale_linewidth_ordinal, !!!args) } #' @rdname scale_linewidth @@ -66,8 +68,7 @@ scale_linewidth_ordinal <- function(..., range = c(2, 6)) { discrete_scale( "linewidth", - "linewidth_d", - function(n) seq(range[1], range[2], length.out = n), + palette = function(n) seq(range[1], range[2], length.out = n), ... ) } diff --git a/R/scale-manual.R b/R/scale-manual.R index 6d86c5f42c..380d64d64f 100644 --- a/R/scale-manual.R +++ b/R/scale-manual.R @@ -142,7 +142,8 @@ scale_discrete_manual <- function(aesthetics, ..., values, breaks = waiver()) { } manual_scale <- function(aesthetic, values = NULL, breaks = waiver(), ..., - limits = NULL) { + limits = NULL, call = caller_call()) { + call <- call %||% current_call() # check for missing `values` parameter, in lieu of providing # a default to all the different scale_*_manual() functions if (is_missing(values)) { @@ -182,5 +183,6 @@ manual_scale <- function(aesthetic, values = NULL, breaks = waiver(), ..., } values } - discrete_scale(aesthetic, "manual", pal, breaks = breaks, limits = limits, ...) + discrete_scale(aesthetic, palette = pal, breaks = breaks, limits = limits, + call = call, ...) } diff --git a/R/scale-shape.R b/R/scale-shape.R index daccdbbb98..cc293174ef 100644 --- a/R/scale-shape.R +++ b/R/scale-shape.R @@ -41,13 +41,13 @@ #' facet_wrap(~shape) + #' theme_void() scale_shape <- function(..., solid = TRUE) { - discrete_scale("shape", "shape_d", shape_pal(solid), ...) + discrete_scale("shape", palette = shape_pal(solid), ...) } #' @rdname scale_shape #' @export scale_shape_binned <- function(..., solid = TRUE) { - binned_scale("shape", "shape_b", binned_pal(shape_pal(solid)), ...) + binned_scale("shape", palette = binned_pal(shape_pal(solid)), ...) } #' @rdname scale_shape @@ -60,7 +60,9 @@ scale_shape_discrete <- scale_shape #' @usage NULL scale_shape_ordinal <- function(...) { cli::cli_warn("Using shapes for an ordinal variable is not advised") - scale_shape(...) + args <- list2(...) + args$call <- args$call %||% current_call() + exec(scale_shape, !!!args) } #' @rdname scale_shape diff --git a/R/scale-size.R b/R/scale-size.R index 0259dfd767..c75a22fa3e 100644 --- a/R/scale-size.R +++ b/R/scale-size.R @@ -52,7 +52,7 @@ NULL scale_size_continuous <- function(name = waiver(), breaks = waiver(), labels = waiver(), limits = NULL, range = c(1, 6), trans = "identity", guide = "legend") { - continuous_scale("size", "area", area_pal(range), name = name, + continuous_scale("size", palette = area_pal(range), name = name, breaks = breaks, labels = labels, limits = limits, trans = trans, guide = guide) } @@ -66,7 +66,7 @@ scale_size <- scale_size_continuous scale_radius <- function(name = waiver(), breaks = waiver(), labels = waiver(), limits = NULL, range = c(1, 6), trans = "identity", guide = "legend") { - continuous_scale("size", "radius", rescale_pal(range), name = name, + continuous_scale("size", palette = rescale_pal(range), name = name, breaks = breaks, labels = labels, limits = limits, trans = trans, guide = guide) } @@ -76,7 +76,7 @@ scale_radius <- function(name = waiver(), breaks = waiver(), labels = waiver(), scale_size_binned <- function(name = waiver(), breaks = waiver(), labels = waiver(), limits = NULL, range = c(1, 6), n.breaks = NULL, nice.breaks = TRUE, trans = "identity", guide = "bins") { - binned_scale("size", "area_b", area_pal(range), name = name, + binned_scale("size", palette = area_pal(range), name = name, breaks = breaks, labels = labels, limits = limits, trans = trans, n.breaks = n.breaks, nice.breaks = nice.breaks, guide = guide) } @@ -86,7 +86,9 @@ scale_size_binned <- function(name = waiver(), breaks = waiver(), labels = waive #' @usage NULL scale_size_discrete <- function(...) { cli::cli_warn("Using {.field size} for a discrete variable is not advised.") - scale_size_ordinal(...) + args <- list2(...) + args$call <- args$call %||% current_call() + exec(scale_size_ordinal, !!!args) } #' @rdname scale_size @@ -97,8 +99,7 @@ scale_size_ordinal <- function(..., range = c(2, 6)) { discrete_scale( "size", - "size_d", - function(n) { + palette = function(n) { area <- seq(range[1] ^ 2, range[2] ^ 2, length.out = n) sqrt(area) }, @@ -111,7 +112,7 @@ scale_size_ordinal <- function(..., range = c(2, 6)) { #' @export #' @rdname scale_size scale_size_area <- function(..., max_size = 6) { - continuous_scale("size", "area", + continuous_scale("size", palette = abs_area(max_size), rescaler = rescale_max, ...) } @@ -119,7 +120,7 @@ scale_size_area <- function(..., max_size = 6) { #' @export #' @rdname scale_size scale_size_binned_area <- function(..., max_size = 6) { - binned_scale("size", "area_b", + binned_scale("size", palette = abs_area(max_size), rescaler = rescale_max, ...) } diff --git a/R/scale-steps.R b/R/scale-steps.R index 193fa6ddcb..5bbba07cb9 100644 --- a/R/scale-steps.R +++ b/R/scale-steps.R @@ -46,7 +46,7 @@ #' @rdname scale_steps scale_colour_steps <- function(..., low = "#132B43", high = "#56B1F7", space = "Lab", na.value = "grey50", guide = "coloursteps", aesthetics = "colour") { - binned_scale(aesthetics, "steps", seq_gradient_pal(low, high, space), + binned_scale(aesthetics, palette = seq_gradient_pal(low, high, space), na.value = na.value, guide = guide, ...) } #' @rdname scale_steps @@ -54,7 +54,7 @@ scale_colour_steps <- function(..., low = "#132B43", high = "#56B1F7", space = " scale_colour_steps2 <- function(..., low = muted("red"), mid = "white", high = muted("blue"), midpoint = 0, space = "Lab", na.value = "grey50", guide = "coloursteps", aesthetics = "colour") { - binned_scale(aesthetics, "steps2", div_gradient_pal(low, mid, high, space), + binned_scale(aesthetics, palette = div_gradient_pal(low, mid, high, space), na.value = na.value, guide = guide, rescaler = mid_rescaler(mid = midpoint), ...) } #' @rdname scale_steps @@ -62,14 +62,14 @@ scale_colour_steps2 <- function(..., low = muted("red"), mid = "white", high = m scale_colour_stepsn <- function(..., colours, values = NULL, space = "Lab", na.value = "grey50", guide = "coloursteps", aesthetics = "colour", colors) { colours <- if (missing(colours)) colors else colours - binned_scale(aesthetics, "stepsn", - gradient_n_pal(colours, values, space), na.value = na.value, guide = guide, ...) + binned_scale(aesthetics, palette = gradient_n_pal(colours, values, space), + na.value = na.value, guide = guide, ...) } #' @rdname scale_steps #' @export scale_fill_steps <- function(..., low = "#132B43", high = "#56B1F7", space = "Lab", na.value = "grey50", guide = "coloursteps", aesthetics = "fill") { - binned_scale(aesthetics, "steps", seq_gradient_pal(low, high, space), + binned_scale(aesthetics, palette = seq_gradient_pal(low, high, space), na.value = na.value, guide = guide, ...) } #' @rdname scale_steps @@ -77,7 +77,7 @@ scale_fill_steps <- function(..., low = "#132B43", high = "#56B1F7", space = "La scale_fill_steps2 <- function(..., low = muted("red"), mid = "white", high = muted("blue"), midpoint = 0, space = "Lab", na.value = "grey50", guide = "coloursteps", aesthetics = "fill") { - binned_scale(aesthetics, "steps2", div_gradient_pal(low, mid, high, space), + binned_scale(aesthetics, palette = div_gradient_pal(low, mid, high, space), na.value = na.value, guide = guide, rescaler = mid_rescaler(mid = midpoint), ...) } #' @rdname scale_steps @@ -85,6 +85,6 @@ scale_fill_steps2 <- function(..., low = muted("red"), mid = "white", high = mut scale_fill_stepsn <- function(..., colours, values = NULL, space = "Lab", na.value = "grey50", guide = "coloursteps", aesthetics = "fill", colors) { colours <- if (missing(colours)) colors else colours - binned_scale(aesthetics, "stepsn", - gradient_n_pal(colours, values, space), na.value = na.value, guide = guide, ...) + binned_scale(aesthetics, palette = gradient_n_pal(colours, values, space), + na.value = na.value, guide = guide, ...) } diff --git a/R/scale-type.R b/R/scale-type.R index d8d4a70b6f..2feaa69c82 100644 --- a/R/scale-type.R +++ b/R/scale-type.R @@ -11,8 +11,11 @@ find_scale <- function(aes, x, env = parent.frame()) { for (scale in candidates) { scale_f <- find_global(scale, env, mode = "function") - if (!is.null(scale_f)) - return(scale_f()) + if (!is.null(scale_f)) { + sc <- scale_f() + sc$call <- parse_expr(paste0(scale, "()")) + return(sc) + } } # Failure to find a scale is not an error because some "aesthetics" don't diff --git a/R/scale-viridis.R b/R/scale-viridis.R index 6460d435b9..72ecd4a491 100644 --- a/R/scale-viridis.R +++ b/R/scale-viridis.R @@ -62,8 +62,7 @@ scale_colour_viridis_d <- function(..., alpha = 1, begin = 0, end = 1, direction = 1, option = "D", aesthetics = "colour") { discrete_scale( aesthetics, - "viridis_d", - viridis_pal(alpha, begin, end, direction, option), + palette = viridis_pal(alpha, begin, end, direction, option), ... ) } @@ -74,8 +73,7 @@ scale_fill_viridis_d <- function(..., alpha = 1, begin = 0, end = 1, direction = 1, option = "D", aesthetics = "fill") { discrete_scale( aesthetics, - "viridis_d", - viridis_pal(alpha, begin, end, direction, option), + palette = viridis_pal(alpha, begin, end, direction, option), ... ) } @@ -88,8 +86,7 @@ scale_colour_viridis_c <- function(..., alpha = 1, begin = 0, end = 1, guide = "colourbar", aesthetics = "colour") { continuous_scale( aesthetics, - "viridis_c", - gradient_n_pal( + palette = gradient_n_pal( viridis_pal(alpha, begin, end, direction, option)(6), values, space @@ -108,8 +105,7 @@ scale_fill_viridis_c <- function(..., alpha = 1, begin = 0, end = 1, guide = "colourbar", aesthetics = "fill") { continuous_scale( aesthetics, - "viridis_c", - gradient_n_pal( + palette = gradient_n_pal( viridis_pal(alpha, begin, end, direction, option)(6), values, space @@ -132,8 +128,7 @@ scale_colour_viridis_b <- function(..., alpha = 1, begin = 0, end = 1, binned_scale( aesthetics, - "viridis_b", - pal, + palette = pal, na.value = na.value, guide = guide, ... @@ -152,8 +147,7 @@ scale_fill_viridis_b <- function(..., alpha = 1, begin = 0, end = 1, binned_scale( aesthetics, - "viridis_b", - pal, + palette = pal, na.value = na.value, guide = guide, ... diff --git a/R/zxx.R b/R/zxx.R index 222238abc4..369f7c532c 100644 --- a/R/zxx.R +++ b/R/zxx.R @@ -5,10 +5,20 @@ #' @usage NULL scale_colour_ordinal <- function(..., type = getOption("ggplot2.ordinal.colour", getOption("ggplot2.ordinal.fill"))) { type <- type %||% scale_colour_viridis_d + args <- list2(...) + args$call <- args$call %||% current_call() if (is.function(type)) { - type(...) + if (any(c("...", "call") %in% fn_fmls_names(type))) { + args$call <- args$call %||% current_call() + } + exec(type, !!!args) } else { - discrete_scale("colour", "ordinal", ordinal_pal(type), ...) + exec( + discrete_scale, + aesthetics = "colour", + palette = ordinal_pal(type), + !!!args + ) } } @@ -72,10 +82,21 @@ scale_color_date <- scale_colour_date #' @usage NULL scale_fill_ordinal <- function(..., type = getOption("ggplot2.ordinal.fill", getOption("ggplot2.ordinal.colour"))) { type <- type %||% scale_fill_viridis_d + args <- list2(...) + args$call <- args$call %||% current_call() + if (is.function(type)) { - type(...) + if (any(c("...", "call") %in% fn_fmls_names(type))) { + args$call <- args$call %||% current_call() + } + exec(type, !!!args) } else { - discrete_scale("fill", "ordinal", ordinal_pal(type), ...) + exec( + discrete_scale, + aesthetics = "fill", + palette = ordinal_pal(type), + !!!args + ) } } diff --git a/man/binned_scale.Rd b/man/binned_scale.Rd index 6a64eb36d7..e242ee7a6b 100644 --- a/man/binned_scale.Rd +++ b/man/binned_scale.Rd @@ -6,7 +6,7 @@ \usage{ binned_scale( aesthetics, - scale_name, + scale_name = deprecated(), palette, name = waiver(), breaks = waiver(), @@ -23,14 +23,15 @@ binned_scale( show.limits = FALSE, guide = "bins", position = "left", + call = caller_call(), super = ScaleBinned ) } \arguments{ \item{aesthetics}{The names of the aesthetics that this scale works with.} -\item{scale_name}{The name of the scale that should be used for error messages -associated with this scale.} +\item{scale_name}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The name of the scale +that should be used for error messages associated with this scale.} \item{palette}{A palette function that when called with a numeric vector with values between 0 and 1 returns the corresponding output values @@ -140,6 +141,8 @@ You can create your own transformation with \code{\link[scales:trans_new]{scales \item{position}{For position scales, The position of the axis. \code{left} or \code{right} for y axes, \code{top} or \code{bottom} for x axes.} +\item{call}{The \code{call} used to construct the scale for reporting messages.} + \item{super}{The super class to use for the constructed scale} } \description{ diff --git a/man/continuous_scale.Rd b/man/continuous_scale.Rd index 677091357e..530d96e525 100644 --- a/man/continuous_scale.Rd +++ b/man/continuous_scale.Rd @@ -6,7 +6,7 @@ \usage{ continuous_scale( aesthetics, - scale_name, + scale_name = deprecated(), palette, name = waiver(), breaks = waiver(), @@ -21,14 +21,15 @@ continuous_scale( trans = "identity", guide = "legend", position = "left", + call = caller_call(), super = ScaleContinuous ) } \arguments{ \item{aesthetics}{The names of the aesthetics that this scale works with.} -\item{scale_name}{The name of the scale that should be used for error messages -associated with this scale.} +\item{scale_name}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The name of the scale +that should be used for error messages associated with this scale.} \item{palette}{A palette function that when called with a numeric vector with values between 0 and 1 returns the corresponding output values @@ -136,6 +137,8 @@ You can create your own transformation with \code{\link[scales:trans_new]{scales \item{position}{For position scales, The position of the axis. \code{left} or \code{right} for y axes, \code{top} or \code{bottom} for x axes.} +\item{call}{The \code{call} used to construct the scale for reporting messages.} + \item{super}{The super class to use for the constructed scale} } \description{ diff --git a/man/datetime_scale.Rd b/man/datetime_scale.Rd index 41193c86c8..c3a2f778a1 100644 --- a/man/datetime_scale.Rd +++ b/man/datetime_scale.Rd @@ -16,6 +16,7 @@ datetime_scale( date_minor_breaks = waiver(), timezone = NULL, guide = "legend", + call = caller_call(), ... ) } @@ -79,11 +80,13 @@ optionally followed by 's'.} \item{guide}{A function used to create a guide or its name. See \code{\link[=guides]{guides()}} for more information.} +\item{call}{The \code{call} used to construct the scale for reporting messages.} + \item{...}{ Arguments passed on to \code{\link[=continuous_scale]{continuous_scale}} \describe{ - \item{\code{scale_name}}{The name of the scale that should be used for error messages -associated with this scale.} + \item{\code{scale_name}}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The name of the scale +that should be used for error messages associated with this scale.} \item{\code{name}}{The name of the scale. Used as the axis or legend title. If \code{waiver()}, the default, the name of the scale is taken from the first mapping used for that aesthetic. If \code{NULL}, the legend title will be diff --git a/man/discrete_scale.Rd b/man/discrete_scale.Rd index e879c4e5f4..b2047dcbde 100644 --- a/man/discrete_scale.Rd +++ b/man/discrete_scale.Rd @@ -6,7 +6,7 @@ \usage{ discrete_scale( aesthetics, - scale_name, + scale_name = deprecated(), palette, name = waiver(), breaks = waiver(), @@ -18,14 +18,15 @@ discrete_scale( drop = TRUE, guide = "legend", position = "left", + call = caller_call(), super = ScaleDiscrete ) } \arguments{ \item{aesthetics}{The names of the aesthetics that this scale works with.} -\item{scale_name}{The name of the scale that should be used for error messages -associated with this scale.} +\item{scale_name}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The name of the scale +that should be used for error messages associated with this scale.} \item{palette}{A palette function that when called with a single integer argument (the number of levels in the scale) returns the values that @@ -93,6 +94,8 @@ The default, \code{TRUE}, uses the levels that appear in the data; \item{position}{For position scales, The position of the axis. \code{left} or \code{right} for y axes, \code{top} or \code{bottom} for x axes.} +\item{call}{The \code{call} used to construct the scale for reporting messages.} + \item{super}{The super class to use for the constructed scale} } \description{ diff --git a/man/scale_discrete.Rd b/man/scale_discrete.Rd index 156c1b1f0d..af686fe8a8 100644 --- a/man/scale_discrete.Rd +++ b/man/scale_discrete.Rd @@ -44,8 +44,8 @@ from a discrete scale, specify \code{na.translate = FALSE}.} missing values be displayed as? Does not apply to position scales where \code{NA} is always placed at the far right.} \item{\code{aesthetics}}{The names of the aesthetics that this scale works with.} - \item{\code{scale_name}}{The name of the scale that should be used for error messages -associated with this scale.} + \item{\code{scale_name}}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The name of the scale +that should be used for error messages associated with this scale.} \item{\code{name}}{The name of the scale. Used as the axis or legend title. If \code{waiver()}, the default, the name of the scale is taken from the first mapping used for that aesthetic. If \code{NULL}, the legend title will be @@ -61,6 +61,7 @@ transformation object as output. Also accepts rlang \link[rlang:as_function]{lambda} function notation. }} + \item{\code{call}}{The \code{call} used to construct the scale for reporting messages.} \item{\code{super}}{The super class to use for the constructed scale} }} diff --git a/man/scale_gradient.Rd b/man/scale_gradient.Rd index 53dfc30a16..35d57f2b68 100644 --- a/man/scale_gradient.Rd +++ b/man/scale_gradient.Rd @@ -88,8 +88,8 @@ scale_fill_gradientn( \item{...}{ Arguments passed on to \code{\link[=continuous_scale]{continuous_scale}} \describe{ - \item{\code{scale_name}}{The name of the scale that should be used for error messages -associated with this scale.} + \item{\code{scale_name}}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The name of the scale +that should be used for error messages associated with this scale.} \item{\code{palette}}{A palette function that when called with a numeric vector with values between 0 and 1 returns the corresponding output values (e.g., \code{\link[scales:area_pal]{scales::area_pal()}}).} @@ -179,6 +179,7 @@ expand the scale by 5\% on each side for continuous variables, and by 0.6 units on each side for discrete variables.} \item{\code{position}}{For position scales, The position of the axis. \code{left} or \code{right} for y axes, \code{top} or \code{bottom} for x axes.} + \item{\code{call}}{The \code{call} used to construct the scale for reporting messages.} \item{\code{super}}{The super class to use for the constructed scale} }} diff --git a/man/scale_grey.Rd b/man/scale_grey.Rd index 75175e9b87..b25989858c 100644 --- a/man/scale_grey.Rd +++ b/man/scale_grey.Rd @@ -53,8 +53,8 @@ The default, \code{TRUE}, uses the levels that appear in the data; \item{\code{na.translate}}{Unlike continuous scales, discrete scales can easily show missing values, and do so by default. If you want to remove missing values from a discrete scale, specify \code{na.translate = FALSE}.} - \item{\code{scale_name}}{The name of the scale that should be used for error messages -associated with this scale.} + \item{\code{scale_name}}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The name of the scale +that should be used for error messages associated with this scale.} \item{\code{name}}{The name of the scale. Used as the axis or legend title. If \code{waiver()}, the default, the name of the scale is taken from the first mapping used for that aesthetic. If \code{NULL}, the legend title will be @@ -80,6 +80,7 @@ expand the scale by 5\% on each side for continuous variables, and by 0.6 units on each side for discrete variables.} \item{\code{position}}{For position scales, The position of the axis. \code{left} or \code{right} for y axes, \code{top} or \code{bottom} for x axes.} + \item{\code{call}}{The \code{call} used to construct the scale for reporting messages.} \item{\code{super}}{The super class to use for the constructed scale} }} diff --git a/man/scale_hue.Rd b/man/scale_hue.Rd index cacdff69eb..73c1fe0ade 100644 --- a/man/scale_hue.Rd +++ b/man/scale_hue.Rd @@ -59,8 +59,8 @@ The default, \code{TRUE}, uses the levels that appear in the data; \item{\code{na.translate}}{Unlike continuous scales, discrete scales can easily show missing values, and do so by default. If you want to remove missing values from a discrete scale, specify \code{na.translate = FALSE}.} - \item{\code{scale_name}}{The name of the scale that should be used for error messages -associated with this scale.} + \item{\code{scale_name}}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The name of the scale +that should be used for error messages associated with this scale.} \item{\code{name}}{The name of the scale. Used as the axis or legend title. If \code{waiver()}, the default, the name of the scale is taken from the first mapping used for that aesthetic. If \code{NULL}, the legend title will be @@ -86,6 +86,7 @@ expand the scale by 5\% on each side for continuous variables, and by 0.6 units on each side for discrete variables.} \item{\code{position}}{For position scales, The position of the axis. \code{left} or \code{right} for y axes, \code{top} or \code{bottom} for x axes.} + \item{\code{call}}{The \code{call} used to construct the scale for reporting messages.} \item{\code{super}}{The super class to use for the constructed scale} }} diff --git a/man/scale_linetype.Rd b/man/scale_linetype.Rd index 88ace88fb7..961064ea4d 100644 --- a/man/scale_linetype.Rd +++ b/man/scale_linetype.Rd @@ -47,8 +47,8 @@ The default, \code{TRUE}, uses the levels that appear in the data; missing values, and do so by default. If you want to remove missing values from a discrete scale, specify \code{na.translate = FALSE}.} \item{\code{aesthetics}}{The names of the aesthetics that this scale works with.} - \item{\code{scale_name}}{The name of the scale that should be used for error messages -associated with this scale.} + \item{\code{scale_name}}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The name of the scale +that should be used for error messages associated with this scale.} \item{\code{name}}{The name of the scale. Used as the axis or legend title. If \code{waiver()}, the default, the name of the scale is taken from the first mapping used for that aesthetic. If \code{NULL}, the legend title will be @@ -66,6 +66,7 @@ notation. }} \item{\code{guide}}{A function used to create a guide or its name. See \code{\link[=guides]{guides()}} for more information.} + \item{\code{call}}{The \code{call} used to construct the scale for reporting messages.} \item{\code{super}}{The super class to use for the constructed scale} }} diff --git a/man/scale_manual.Rd b/man/scale_manual.Rd index d8dbdfcfe7..7a3f7402cf 100644 --- a/man/scale_manual.Rd +++ b/man/scale_manual.Rd @@ -62,8 +62,8 @@ The default, \code{TRUE}, uses the levels that appear in the data; \item{\code{na.translate}}{Unlike continuous scales, discrete scales can easily show missing values, and do so by default. If you want to remove missing values from a discrete scale, specify \code{na.translate = FALSE}.} - \item{\code{scale_name}}{The name of the scale that should be used for error messages -associated with this scale.} + \item{\code{scale_name}}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The name of the scale +that should be used for error messages associated with this scale.} \item{\code{name}}{The name of the scale. Used as the axis or legend title. If \code{waiver()}, the default, the name of the scale is taken from the first mapping used for that aesthetic. If \code{NULL}, the legend title will be @@ -81,6 +81,7 @@ notation. }} \item{\code{guide}}{A function used to create a guide or its name. See \code{\link[=guides]{guides()}} for more information.} + \item{\code{call}}{The \code{call} used to construct the scale for reporting messages.} \item{\code{super}}{The super class to use for the constructed scale} }} diff --git a/man/scale_shape.Rd b/man/scale_shape.Rd index de53364c09..367aef2238 100644 --- a/man/scale_shape.Rd +++ b/man/scale_shape.Rd @@ -47,8 +47,8 @@ from a discrete scale, specify \code{na.translate = FALSE}.} missing values be displayed as? Does not apply to position scales where \code{NA} is always placed at the far right.} \item{\code{aesthetics}}{The names of the aesthetics that this scale works with.} - \item{\code{scale_name}}{The name of the scale that should be used for error messages -associated with this scale.} + \item{\code{scale_name}}{\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#deprecated}{\figure{lifecycle-deprecated.svg}{options: alt='[Deprecated]'}}}{\strong{[Deprecated]}} The name of the scale +that should be used for error messages associated with this scale.} \item{\code{name}}{The name of the scale. Used as the axis or legend title. If \code{waiver()}, the default, the name of the scale is taken from the first mapping used for that aesthetic. If \code{NULL}, the legend title will be @@ -66,6 +66,7 @@ notation. }} \item{\code{guide}}{A function used to create a guide or its name. See \code{\link[=guides]{guides()}} for more information.} + \item{\code{call}}{The \code{call} used to construct the scale for reporting messages.} \item{\code{super}}{The super class to use for the constructed scale} }} diff --git a/man/scale_size.Rd b/man/scale_size.Rd index 304ceafa56..ac7d79021f 100644 --- a/man/scale_size.Rd +++ b/man/scale_size.Rd @@ -152,6 +152,7 @@ expand the scale by 5\% on each side for continuous variables, and by 0.6 units on each side for discrete variables.} \item{\code{position}}{For position scales, The position of the axis. \code{left} or \code{right} for y axes, \code{top} or \code{bottom} for x axes.} + \item{\code{call}}{The \code{call} used to construct the scale for reporting messages.} \item{\code{super}}{The super class to use for the constructed scale} }} diff --git a/man/scale_steps.Rd b/man/scale_steps.Rd index 3dcad65e49..4ce18b6839 100644 --- a/man/scale_steps.Rd +++ b/man/scale_steps.Rd @@ -162,6 +162,7 @@ expand the scale by 5\% on each side for continuous variables, and by 0.6 units on each side for discrete variables.} \item{\code{position}}{For position scales, The position of the axis. \code{left} or \code{right} for y axes, \code{top} or \code{bottom} for x axes.} + \item{\code{call}}{The \code{call} used to construct the scale for reporting messages.} \item{\code{super}}{The super class to use for the constructed scale} }} diff --git a/tests/testthat/_snaps/scale-binned.md b/tests/testthat/_snaps/scale-binned.md index 4be45dd8e9..661952c611 100644 --- a/tests/testthat/_snaps/scale-binned.md +++ b/tests/testthat/_snaps/scale-binned.md @@ -1,8 +1,8 @@ # binned scales only support continuous data - Binned scales only support continuous data + Binned scales only support continuous data. --- - Binned scales only support continuous data + Binned scales only support continuous data. diff --git a/tests/testthat/_snaps/scales.md b/tests/testthat/_snaps/scales.md index b9adefae05..0f83d92c63 100644 --- a/tests/testthat/_snaps/scales.md +++ b/tests/testthat/_snaps/scales.md @@ -8,39 +8,39 @@ --- - Invalid `breaks` specification. Use "NULL", not "NA" + Invalid `breaks` specification. Use "NULL", not "NA". --- - Invalid `minor_breaks` specification. Use "NULL", not "NA" + Invalid `minor_breaks` specification. Use "NULL", not "NA". --- - Invalid `labels` specification. Use "NULL", not "NA" + Invalid `labels` specification. Use "NULL", not "NA". --- - `breaks` and `labels` are different lengths + `breaks` and `labels` are different lengths. --- - Invalid `breaks` specification. Use "NULL", not "NA" + Invalid `breaks` specification. Use "NULL", not "NA". --- - Invalid `labels` specification. Use "NULL", not "NA" + Invalid `labels` specification. Use "NULL", not "NA". --- - Invalid `breaks` specification. Use "NULL", not "NA" + Invalid `breaks` specification. Use "NULL", not "NA". --- - Invalid `labels` specification. Use "NULL", not "NA" + Invalid `labels` specification. Use "NULL", not "NA". --- - `breaks` and `labels` are different lengths + `breaks` and `labels` are different lengths. # numeric scale transforms can produce breaks @@ -49,3 +49,25 @@ Output [1] NA 1.00000 20.08554 403.42879 +# training incorrectly appropriately communicates the offenders + + Continuous values supplied to discrete scale + i Example values: 1, 2, 3, 4, and 5 + +--- + + Discrete values supplied to continuous scale + i Example values: "A", "B", "C", "D", and "E" + +# Using `scale_name` prompts deprecation message + + The `scale_name` argument of `continuous_scale()` is deprecated as of ggplot2 3.5.0. + +--- + + The `scale_name` argument of `discrete_scale()` is deprecated as of ggplot2 3.5.0. + +--- + + The `scale_name` argument of `binned_scale()` is deprecated as of ggplot2 3.5.0. + diff --git a/tests/testthat/test-geom-dotplot.R b/tests/testthat/test-geom-dotplot.R index 6eda6bb8ed..eedd4ba4e3 100644 --- a/tests/testthat/test-geom-dotplot.R +++ b/tests/testthat/test-geom-dotplot.R @@ -196,7 +196,7 @@ test_that("geom_dotplot draws correctly", { ) ) + geom_dotplot(binwidth = .4, fill = "red", col = "blue") + - continuous_scale("stroke", "scaleName", function(x) scales::rescale(x, to = c(1, 6))) + continuous_scale("stroke", palette = function(x) scales::rescale(x, to = c(1, 6))) ) # Stacking groups diff --git a/tests/testthat/test-scale-colour-continuous.R b/tests/testthat/test-scale-colour-continuous.R index 10e3ae4dd5..e97e3d5b01 100644 --- a/tests/testthat/test-scale-colour-continuous.R +++ b/tests/testthat/test-scale-colour-continuous.R @@ -3,7 +3,7 @@ test_that("type argument is checked for proper input", { scale_colour_continuous(type = function() "abc") ) expect_snapshot_error( - scale_fill_continuous(type = geom_point) + suppressWarnings(scale_fill_continuous(type = geom_point)) ) expect_snapshot_error( scale_colour_binned(type = function(...) scale_colour_binned(aesthetics = c("fill", "point_colour"))) diff --git a/tests/testthat/test-scale-type.R b/tests/testthat/test-scale-type.R index ccefcee95b..4be2fe9ebf 100644 --- a/tests/testthat/test-scale-type.R +++ b/tests/testthat/test-scale-type.R @@ -12,3 +12,15 @@ test_that("message + continuous for unknown type", { expect_message(scale <- find_scale("colour", x), "ggplot2_foo") expect_s3_class(scale, "ScaleContinuous") }) + +test_that("find_scale gives sensible calls to scales", { + expect_equal( + find_scale("x", 1)$call, + quote(scale_x_continuous()) + ) + + expect_equal( + find_scale("colour", "A")$call, + quote(scale_colour_discrete()) + ) +}) diff --git a/tests/testthat/test-scales.R b/tests/testthat/test-scales.R index 639f65674b..bedf7fb94b 100644 --- a/tests/testthat/test-scales.R +++ b/tests/testthat/test-scales.R @@ -197,7 +197,7 @@ test_that("scales warn when transforms introduces non-finite values", { geom_point(size = 5) + scale_y_log10() - expect_warning(ggplot_build(p), "Transformation introduced infinite values") + expect_warning(ggplot_build(p), "log-10 transformation introduced infinite values.") }) test_that("size and alpha scales throw appropriate warnings for factors", { @@ -288,7 +288,7 @@ test_that("multiple aesthetics can be set with one function call", { test_that("limits with NA are replaced with the min/max of the data for continuous scales", { make_scale <- function(limits = NULL, data = NULL) { - scale <- continuous_scale("aesthetic", scale_name = "test", palette = identity, limits = limits) + scale <- continuous_scale("aesthetic", palette = identity, limits = limits) if (!is.null(data)) { scale$train(data) } @@ -521,3 +521,164 @@ test_that("numeric scale transforms can produce breaks", { expect_equal(test_breaks("sqrt", limits = c(0, 10)), seq(0, 10, by = 2.5)) }) + +test_that("scale functions accurately report their calls", { + + construct <- exprs( + scale_alpha(), + scale_alpha_binned(), + scale_alpha_continuous(), + scale_alpha_date(), + scale_alpha_datetime(), + scale_alpha_discrete(), + scale_alpha_identity(), + scale_alpha_manual(), + scale_alpha_ordinal(), + # Skipping American spelling of 'color' scales here + scale_colour_binned(), + scale_colour_brewer(), + scale_colour_continuous(), + scale_colour_date(), + scale_colour_datetime(), + scale_colour_discrete(), + scale_colour_distiller(), + scale_colour_fermenter(), + scale_colour_gradient(), + scale_colour_gradient2(), + # Some scales have required arguments + scale_colour_gradientn(colours = c("firebrick", "limegreen")), + scale_colour_grey(), + scale_colour_hue(), + scale_colour_identity(), + scale_colour_manual(), + scale_colour_ordinal(), + scale_colour_steps(), + scale_colour_steps2(), + scale_colour_stepsn(colours = c("orchid", "tomato")), + scale_colour_viridis_b(), + scale_colour_viridis_c(), + scale_colour_viridis_d(), + scale_continuous_identity(aesthetics = "foo"), + scale_discrete_identity(aesthetics = "bar"), + scale_discrete_manual(aesthetics = "baz"), + scale_fill_binned(), + scale_fill_brewer(), + scale_fill_continuous(), + scale_fill_date(), + scale_fill_datetime(), + scale_fill_discrete(), + scale_fill_distiller(), + scale_fill_fermenter(), + scale_fill_gradient(), + scale_fill_gradient2(), + scale_fill_gradientn(colours = c("yellow", "green")), + scale_fill_grey(), + scale_fill_hue(), + scale_fill_identity(), + scale_fill_manual(), + scale_fill_ordinal(), + scale_fill_steps(), + scale_fill_steps2(), + scale_fill_stepsn(colours = c("steelblue", "pink")), + scale_fill_viridis_b(), + scale_fill_viridis_c(), + scale_fill_viridis_d(), + scale_linetype(), + scale_linetype_binned(), + # scale_linetype_continuous(), # designed to throw error + scale_linetype_discrete(), + scale_linetype_identity(), + scale_linetype_manual(), + scale_linewidth(), + scale_linewidth_binned(), + scale_linewidth_continuous(), + scale_linewidth_date(), + scale_linewidth_datetime(), + scale_linewidth_discrete(), + scale_linewidth_identity(), + scale_linewidth_manual(), + scale_linewidth_ordinal(), + scale_radius(), + scale_shape(), + scale_shape_binned(), + # scale_shape_continuous(), # designed to throw error + scale_shape_discrete(), + scale_shape_identity(), + scale_shape_manual(), + scale_shape_ordinal(), + scale_size(), + scale_size_area(), + scale_size_binned(), + scale_size_binned_area(), + scale_size_continuous(), + scale_size_date(), + scale_size_datetime(), + scale_size_discrete(), + scale_size_identity(), + scale_size_manual(), + scale_size_ordinal(), + scale_x_binned(), + scale_x_continuous(), + scale_x_date(), + scale_x_datetime(), + scale_x_discrete(), + scale_x_log10(), + scale_x_reverse(), + scale_x_sqrt(), + # scale_x_time(), + scale_y_binned(), + scale_y_continuous(), + scale_y_date(), + scale_y_datetime(), + scale_y_discrete(), + scale_y_log10(), + scale_y_reverse(), + scale_y_sqrt(), + # scale_y_time(), + xlim(10, 20), + ylim("A", "B") + ) + if (is_installed("hms")) { + construct <- c(construct, exprs(scale_x_time(), scale_y_time())) + } + + suppressWarnings( + calls <- lapply(construct, function(x) eval(x)$call) + ) + expect_equal(calls, construct) +}) + +test_that("training incorrectly appropriately communicates the offenders", { + + sc <- scale_colour_viridis_d() + expect_snapshot_error( + sc$train(1:5) + ) + + sc <- scale_colour_viridis_c() + expect_snapshot_error( + sc$train(LETTERS[1:5]) + ) +}) + +test_that("find_scale appends appropriate calls", { + + expect_equal( + find_scale("x", 1)$call, + quote(scale_x_continuous()) + ) + + expect_equal( + find_scale("colour", "A")$call, + quote(scale_colour_discrete()) + ) + +}) + +test_that("Using `scale_name` prompts deprecation message", { + + expect_snapshot_warning(continuous_scale("x", "foobar", identity_pal())) + expect_snapshot_warning(discrete_scale("x", "foobar", identity_pal())) + expect_snapshot_warning(binned_scale("x", "foobar", identity_pal())) + +}) From 954924b87bc7d8524745bcf742ef79e39d528e19 Mon Sep 17 00:00:00 2001 From: Davis Vaughan Date: Tue, 12 Sep 2023 11:03:06 -0400 Subject: [PATCH 02/21] Only call `zero_range()` and `as.numeric()` in transformed space (#5304) * Only call `zero_range()` and `as.numeric()` in transformed space In case the `limits` in data space don't support conversion to numeric * Add comment with link to PR * NEWS bullet --------- Co-authored-by: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> --- NEWS.md | 3 +++ R/scale-.R | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 747eebf6bb..5b4d074c57 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # ggplot2 (development version) +* `ScaleContinuous$get_breaks()` now only calls `scales::zero_range()` on limits + in transformed space, rather than in data space (#5304). + * Scales throw more informative messages (@teunbrand, #4185, #4258) * The `scale_name` argument in `continuous_scale()`, `discrete_scale()` and diff --git a/R/scale-.R b/R/scale-.R index 9a9ef4f4c9..eb4248048d 100644 --- a/R/scale-.R +++ b/R/scale-.R @@ -691,7 +691,9 @@ ScaleContinuous <- ggproto("ScaleContinuous", Scale, ) } - if (zero_range(as.numeric(limits))) { + # Compute `zero_range()` in transformed space in case `limits` in data space + # don't support conversion to numeric (#5304) + if (zero_range(as.numeric(self$trans$transform(limits)))) { breaks <- limits[1] } else if (is.waive(self$breaks)) { if (!is.null(self$n.breaks) && trans_support_nbreaks(self$trans)) { From ef9f8d6203cbfbde2d3bad0ded3104585cda3255 Mon Sep 17 00:00:00 2001 From: Hiroaki Yutani Date: Thu, 14 Sep 2023 22:25:39 +0900 Subject: [PATCH 03/21] Require R >= 3.5 (#5422) --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index a2b194dcdf..f4b63c3a9f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -28,7 +28,7 @@ License: MIT + file LICENSE URL: https://ggplot2.tidyverse.org, https://github.com/tidyverse/ggplot2 BugReports: https://github.com/tidyverse/ggplot2/issues Depends: - R (>= 3.3) + R (>= 3.5) Imports: cli, glue, From 25f54d994fa6cf34de3f03d3c693c22991067b63 Mon Sep 17 00:00:00 2001 From: Zeki Akyol <40212849+zekiakyol@users.noreply.github.com> Date: Fri, 15 Sep 2023 13:43:26 +0300 Subject: [PATCH 04/21] Update r4ds url (#5406) * Update r4ds url - This pull request updates r4ds() to r4ds 2e (https://r4ds.hadley.nz/). * run `devtools::build_readme()` It updates **README.md** by running `devtools::build_readme()`. --- README.Rmd | 10 +++++----- README.md | 10 ++++------ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/README.Rmd b/README.Rmd index e3b2e6a76c..5a7278a9d2 100644 --- a/README.Rmd +++ b/README.Rmd @@ -69,8 +69,8 @@ If you are looking for innovation, look to ggplot2's rich ecosystem of extension If you are new to ggplot2 you are better off starting with a systematic introduction, rather than trying to learn from reading individual documentation pages. Currently, there are three good places to start: -1. The [Data Visualisation][r4ds-vis] and - [Graphics for communication][r4ds-comm] chapters in +1. The [Data Visualization][r4ds-vis] and + [Communication][r4ds-comm] chapters in [R for Data Science][r4ds]. R for Data Science is designed to give you a comprehensive introduction to the [tidyverse](https://www.tidyverse.org), and these two chapters will @@ -107,7 +107,7 @@ There are two main places to get help with ggplot2: [gg-book]: https://www.amazon.com/Grammar-Graphics-Statistics-Computing/dp/0387245448/ref=as_li_ss_tl [so]: https://stackoverflow.com/questions/tagged/ggplot2?sort=frequent&pageSize=50 [cookbook]: https://r-graphics.org -[r4ds]: https://r4ds.had.co.nz -[r4ds-vis]: https://r4ds.had.co.nz/data-visualisation.html -[r4ds-comm]: https://r4ds.had.co.nz/graphics-for-communication.html +[r4ds]: https://r4ds.hadley.nz +[r4ds-vis]: https://r4ds.hadley.nz/data-visualize +[r4ds-comm]: https://r4ds.hadley.nz/communication [oreilly]: https://learning.oreilly.com/videos/data-visualization-in/9781491963661/ diff --git a/README.md b/README.md index 6a073f315d..3ff7127756 100644 --- a/README.md +++ b/README.md @@ -76,12 +76,10 @@ If you are new to ggplot2 you are better off starting with a systematic introduction, rather than trying to learn from reading individual documentation pages. Currently, there are three good places to start: -1. The [Data - Visualisation](https://r4ds.had.co.nz/data-visualisation.html) and - [Graphics for - communication](https://r4ds.had.co.nz/graphics-for-communication.html) - chapters in [R for Data Science](https://r4ds.had.co.nz). R for Data - Science is designed to give you a comprehensive introduction to the +1. The [Data Visualization](https://r4ds.hadley.nz/data-visualize) and + [Communication](https://r4ds.hadley.nz/communication) chapters in [R + for Data Science](https://r4ds.hadley.nz). R for Data Science is + designed to give you a comprehensive introduction to the [tidyverse](https://www.tidyverse.org), and these two chapters will get you up to speed with the essentials of ggplot2 as quickly as possible. From eb920afbeb1b9e2237ae7f632e219e358897f183 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Mon, 18 Sep 2023 06:25:18 -0700 Subject: [PATCH 05/21] Don't attach Suggests package in test (#5420) --- tests/testthat/test-annotate.R | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/testthat/test-annotate.R b/tests/testthat/test-annotate.R index 68bfcd4e26..c2637f680d 100644 --- a/tests/testthat/test-annotate.R +++ b/tests/testthat/test-annotate.R @@ -33,7 +33,6 @@ test_that("annotation_* has dummy data assigned and don't inherit aes", { skip_if(packageVersion("base") < "3.5.0") custom <- annotation_custom(zeroGrob()) logtick <- annotation_logticks() - library(maps) usamap <- map_data("state") map <- annotation_map(usamap) rainbow <- matrix(hcl(seq(0, 360, length.out = 50 * 50), 80, 70), nrow = 50) From de7bad63c96a009c34285c21883b704674ceaae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Pag=C3=A8s?= Date: Wed, 20 Sep 2023 08:39:03 -0700 Subject: [PATCH 06/21] fortify.default() accepts data-frame-like objects (#5404) * fortify.default() accepts data-frame-like objects `fortify.default()` now accepts a data-frame-like object granted the object exhibits healthy `dim()`, `colnames()`, and `as.data.frame()` behaviors. Closes #5390. * Update snapshot of ggplot(aes(x = x)) * Improve fortify.default() based on Teun's feedback * Follow style guide a little bit more closely in error messages (see https://style.tidyverse.org/error-messages.html) --- NEWS.md | 4 ++ R/fortify.R | 55 ++++++++++++++-- tests/testthat/_snaps/fortify.md | 2 +- tests/testthat/test-fortify.R | 109 +++++++++++++++++++++++++++++++ 4 files changed, 165 insertions(+), 5 deletions(-) diff --git a/NEWS.md b/NEWS.md index 5b4d074c57..65572857c7 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,9 @@ # ggplot2 (development version) +* `fortify.default()` now accepts a data-frame-like object granted the object + exhibits healthy `dim()`, `colnames()`, and `as.data.frame()` behaviors + (@hpages, #5390). + * `ScaleContinuous$get_breaks()` now only calls `scales::zero_range()` on limits in transformed space, rather than in data space (#5304). diff --git a/R/fortify.R b/R/fortify.R index 507e333b20..dab0982b63 100644 --- a/R/fortify.R +++ b/R/fortify.R @@ -33,17 +33,64 @@ fortify.grouped_df <- function(model, data, ...) { model$.group <- dplyr::group_indices(model) model } + +# We rely on object behavior rather than type to determine whether 'data' is +# an acceptable data-frame-like object or not. For this, we check that dim(), +# colnames(), and as.data.frame() behave in a healthy manner on 'data', +# and that their behaviors are aligned (i.e. that as.data.frame() preserves +# the original dimensions and colnames). Note that we don't care about what +# happens to the rownames. +# There are a lot of ways that dim(), colnames(), or as.data.frame() could +# do non-sensical things (they are not even guaranteed to work!) hence the +# paranoid mode. +.prevalidate_data_frame_like_object <- function(data) { + orig_dims <- dim(data) + if (!vec_is(orig_dims, integer(), size=2)) + cli::cli_abort(paste0("{.code dim(data)} must return ", + "an {.cls integer} of length 2.")) + if (anyNA(orig_dims) || any(orig_dims < 0)) # extra-paranoid mode + cli::cli_abort(paste0("{.code dim(data)} can't have {.code NA}s ", + "or negative values.")) + orig_colnames <- colnames(data) + if (!vec_is(orig_colnames, character(), size = ncol(data))) + cli::cli_abort(paste0("{.code colnames(data)} must return a ", + "{.cls character} of length {.code ncol(data)}.")) +} +.postvalidate_data_frame_like_object <- function(df, data) { + msg0 <- "{.code as.data.frame(data)} must " + if (!is.data.frame(df)) + cli::cli_abort(paste0(msg0, "return a {.cls data.frame}.")) + if (!identical(dim(df), dim(data))) + cli::cli_abort(paste0(msg0, "preserve dimensions.")) + if (!identical(colnames(df), colnames(data))) + cli::cli_abort(paste0(msg0, "preserve column names.")) +} +validate_as_data_frame <- function(data) { + if (is.data.frame(data)) + return(data) + .prevalidate_data_frame_like_object(data) + df <- as.data.frame(data) + .postvalidate_data_frame_like_object(df, data) + df +} + #' @export fortify.default <- function(model, data, ...) { - msg <- glue( + msg0 <- paste0( "{{.arg data}} must be a {{.cls data.frame}}, ", - "or an object coercible by `fortify()`, not {obj_type_friendly(model)}." + "or an object coercible by {{.code fortify()}}, or a valid ", + "{{.cls data.frame}}-like object coercible by {{.code as.data.frame()}}" ) if (inherits(model, "uneval")) { msg <- c( - msg, + glue(msg0, ", not {obj_type_friendly(model)}."), "i" = "Did you accidentally pass {.fn aes} to the {.arg data} argument?" ) + cli::cli_abort(msg) } - cli::cli_abort(msg) + msg0 <- paste0(msg0, ". ") + try_fetch( + validate_as_data_frame(model), + error = function(cnd) cli::cli_abort(glue(msg0), parent = cnd) + ) } diff --git a/tests/testthat/_snaps/fortify.md b/tests/testthat/_snaps/fortify.md index d51f061fce..81c3decea5 100644 --- a/tests/testthat/_snaps/fortify.md +++ b/tests/testthat/_snaps/fortify.md @@ -1,5 +1,5 @@ # fortify.default proves a helpful error with class uneval - `data` must be a , or an object coercible by `fortify()`, not a object. + `data` must be a , or an object coercible by `fortify()`, or a valid -like object coercible by `as.data.frame()`, not a object. i Did you accidentally pass `aes()` to the `data` argument? diff --git a/tests/testthat/test-fortify.R b/tests/testthat/test-fortify.R index 2b5c19243e..8741fac2d0 100644 --- a/tests/testthat/test-fortify.R +++ b/tests/testthat/test-fortify.R @@ -45,3 +45,112 @@ test_that("spatial polygons have correct ordering", { test_that("fortify.default proves a helpful error with class uneval", { expect_snapshot_error(ggplot(aes(x = x))) }) + +test_that("fortify.default can handle healthy data-frame-like objects", { + X <- 1:10 + Y <- runif(length(X)) + Z <- rpois(length(X), 0.8) + + # Not even data-frame-like + + expect_error(fortify(X)) + expect_error(fortify(array(1:60, 5:3))) + + # Unhealthy data-frame-like (matrix with no colnames) + + expect_error(fortify(cbind(X, Y, Z, deparse.level=0))) + + # Healthy data-frame-like (matrix with colnames) + + expect_identical(fortify(cbind(X, Y, Z)), as.data.frame(cbind(X, Y, Z))) + + # Some weird data-frame-like thing that fortify.default() considers + # healthy (dim(), colnames(), and as.data.frame() behaviors are aligned) + + object <- setNames(Y, head(letters, length(Y))) + class(object) <- "foo" + + dim.foo <- function(x) c(length(x), 2L) + registerS3method("dim", "foo", dim.foo) + + dimnames.foo <- function(x) list(format(seq_along(x)), c("key", "value")) + registerS3method("dimnames", "foo", dimnames.foo) + + as.data.frame.foo <- function(x, row.names = NULL, ...) { + key <- if (is.null(names(x))) rownames(x) else names(x) + data.frame(key=key, value=unname(unclass(x))) + } + registerS3method("as.data.frame", "foo", as.data.frame.foo) + + expect_identical(fortify(object), data.frame(key=names(object), value=Y)) + + # Rejected by fortify.default() because of unhealthy dim() behavior + + dim.foo <- function(x) stop("oops!") + registerS3method("dim", "foo", dim.foo) + expect_error(fortify(object)) + + dim.foo <- function(x) c(length(x), 2) + registerS3method("dim", "foo", dim.foo) + expect_error(fortify(object)) + + dim.foo <- function(x) 5:2 + registerS3method("dim", "foo", dim.foo) + expect_error(fortify(object)) + + dim.foo <- function(x) c(length(x), NA_integer_) + registerS3method("dim", "foo", dim.foo) + expect_error(fortify(object)) + + dim.foo <- function(x) c(length(x), -5L) + registerS3method("dim", "foo", dim.foo) + expect_error(fortify(object)) + + # Repair dim() + + dim.foo <- function(x) c(length(x), 2L) + registerS3method("dim", "foo", dim.foo) + + # Rejected by fortify.default() because of unhealthy colnames() behavior + + dimnames.foo <- function(x) list() # this breaks colnames() + registerS3method("dimnames", "foo", dimnames.foo) + expect_error(fortify(object)) + + dimnames.foo <- function(x) list(format(seq_along(x)), toupper) + registerS3method("dimnames", "foo", dimnames.foo) + expect_error(fortify(object)) + + # Rejected by fortify.default() because behaviors of dim() and colnames() + # don't align + + dimnames.foo <- function(x) list(NULL, c("X1", "X2", "X3")) + registerS3method("dimnames", "foo", dimnames.foo) + expect_error(fortify(object)) + + # Repair colnames() + + dimnames.foo <- function(x) list(format(seq_along(x)), c("key", "value")) + registerS3method("dimnames", "foo", dimnames.foo) + + # Rejected by fortify.default() because of unhealthy as.data.frame() behavior + + as.data.frame.foo <- function(x, row.names = NULL, ...) stop("oops!") + registerS3method("as.data.frame", "foo", as.data.frame.foo) + expect_error(fortify(object)) + + as.data.frame.foo <- function(x, row.names = NULL, ...) "whatever" + registerS3method("as.data.frame", "foo", as.data.frame.foo) + expect_error(fortify(object)) + + as.data.frame.foo <- function(x, row.names = NULL, ...) data.frame() + registerS3method("as.data.frame", "foo", as.data.frame.foo) + expect_error(fortify(object)) + + as.data.frame.foo <- function(x, row.names = NULL, ...) { + key <- if (is.null(names(x))) rownames(x) else names(x) + data.frame(oops=key, value=unname(unclass(x))) + } + registerS3method("as.data.frame", "foo", as.data.frame.foo) + expect_error(fortify(object)) +}) From 69e74305386094cb1fc0b10495d18492cec5b012 Mon Sep 17 00:00:00 2001 From: Andrei <92amartins@gmail.com> Date: Fri, 22 Sep 2023 11:20:51 -0300 Subject: [PATCH 07/21] Improve labeller() behavior for lookup tables (#5432) --- NEWS.md | 3 +++ R/labeller.R | 6 +++++- tests/testthat/test-labellers.R | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 65572857c7..1d95e88137 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # ggplot2 (development version) +* `labeller()` now handles unspecified entries from lookup tables + (@92amartins, #4599). + * `fortify.default()` now accepts a data-frame-like object granted the object exhibits healthy `dim()`, `colnames()`, and `as.data.frame()` behaviors (@hpages, #5390). diff --git a/R/labeller.R b/R/labeller.R index c367a2aa11..8d2a3884be 100644 --- a/R/labeller.R +++ b/R/labeller.R @@ -450,7 +450,11 @@ labeller <- function(..., .rows = NULL, .cols = NULL, # Apply named labeller one by one out <- lapply(names(labels), function(label) { if (label %in% names(labellers)) { - labellers[[label]](labels[label])[[1]] + # Yield custom labels with any NA replaced with original + lbls <- labellers[[label]](labels[label])[[1]] + ind <- which(is.na(lbls)) + lbls[ind] <- .default(labels[label])[[1]][ind] + lbls } else { .default(labels[label])[[1]] } diff --git a/tests/testthat/test-labellers.R b/tests/testthat/test-labellers.R index 0e352e3b26..460349e960 100644 --- a/tests/testthat/test-labellers.R +++ b/tests/testthat/test-labellers.R @@ -20,3 +20,15 @@ test_that("labeller function catches overlap in names", { ) expect_snapshot_error(ggplotGrob(p)) }) + +test_that("labeller handles badly specified labels from lookup tables", { + df <- data_frame0(am = c(0, 1)) + labs <- labeller(am = c("0" = "Automatic", "11" = "Manual")) + expect_equal(labs(df), list(am = c("Automatic", "1"))) +}) + +test_that("labeller allows cherry-pick some labels", { + df <- data_frame0(am = c(0, 1)) + labs <- labeller(am = c("0" = "Automatic")) + expect_equal(labs(df), list(am = c("Automatic", "1"))) +}) From 72dcfadd62cc8c783af82947d367c30651307e9b Mon Sep 17 00:00:00 2001 From: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> Date: Mon, 2 Oct 2023 10:48:50 +0200 Subject: [PATCH 08/21] Omit rownames from check (#5435) --- R/aes.R | 2 +- tests/testthat/test-aes.R | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/R/aes.R b/R/aes.R index 62a329e120..fc545c4198 100644 --- a/R/aes.R +++ b/R/aes.R @@ -436,7 +436,7 @@ extract_target_is_likely_data <- function(x, data, env) { tryCatch({ data_eval <- eval_tidy(x[[2]], data, env) - identical(data_eval, data) + identical(unrowname(data_eval), unrowname(data)) }, error = function(err) FALSE) } diff --git a/tests/testthat/test-aes.R b/tests/testthat/test-aes.R index 3ac67b9c47..92b51b94e8 100644 --- a/tests/testthat/test-aes.R +++ b/tests/testthat/test-aes.R @@ -128,6 +128,14 @@ test_that("warn_for_aes_extract_usage() warns for discouraged uses of $ and [[ w warn_for_aes_extract_usage(aes(df[["x"]]), df), 'Use of `df\\[\\["x"\\]\\]` is discouraged' ) + + # Check that rownames are ignored (#5392) + df2 <- df + rownames(df2) <- LETTERS[seq_len(nrow(df))] + expect_warning( + warn_for_aes_extract_usage(aes(df$x), df2), + "Use of `df\\$x` is discouraged" + ) }) test_that("warn_for_aes_extract_usage() does not evaluate function calls", { From ad337414c3841049d1f33a801dd11c4c3af24cc7 Mon Sep 17 00:00:00 2001 From: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> Date: Mon, 2 Oct 2023 10:50:24 +0200 Subject: [PATCH 09/21] Move CRS responsibility from GuideAxis to CoordSf (#5440) * Move CRS responsibility to CoordSf * Fix typo --- R/coord-sf.R | 15 ++++++++++----- R/guide-axis.R | 5 ----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/R/coord-sf.R b/R/coord-sf.R index 81207f2ce1..0fe34293de 100644 --- a/R/coord-sf.R +++ b/R/coord-sf.R @@ -255,19 +255,24 @@ CoordSf <- ggproto("CoordSf", CoordCartesian, graticule$y_start <- sf_rescale01_x(graticule$y_start, y_range) graticule$y_end <- sf_rescale01_x(graticule$y_end, y_range) - list( + list2( x_range = x_range, y_range = y_range, graticule = graticule, crs = params$crs, default_crs = params$default_crs, - viewscales = viewscales + !!!viewscales ) }, - setup_panel_guides = function(self, panel_params, guides, params = list()) { - params <- Coord$setup_panel_guides(panel_params$viewscales, guides, params) - c(params, panel_params) + train_panel_guides = function(self, panel_params, layers, params = list()) { + # The guide positions are already in the target CRS, so we mask the default + # CRS to prevent a double transformation. + panel_params$guides <- ggproto_parent(Coord, self)$train_panel_guides( + vec_assign(panel_params, "default_crs", panel_params["crs"]), + layers, params + )$guides + panel_params }, backtransform_range = function(self, panel_params) { diff --git a/R/guide-axis.R b/R/guide-axis.R index eac32b2b98..581370b49d 100644 --- a/R/guide-axis.R +++ b/R/guide-axis.R @@ -135,11 +135,6 @@ GuideAxis <- ggproto( return(params) } - if (inherits(coord, "CoordSf")) { - # Positions already given in target crs - panel_params$default_crs <- panel_params$crs - } - aesthetics <- names(key)[!grepl("^\\.", names(key))] if (!all(c("x", "y") %in% aesthetics)) { other_aesthetic <- setdiff(c("x", "y"), aesthetics) From fa26a55b192f8a7706ad2effe54a3f874d3413c7 Mon Sep 17 00:00:00 2001 From: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> Date: Mon, 2 Oct 2023 10:51:19 +0200 Subject: [PATCH 10/21] Scale call check (#5443) * Fix #5436 * Add tests --- R/scale-continuous.R | 4 ++-- tests/testthat/test-scales.R | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/R/scale-continuous.R b/R/scale-continuous.R index 73b026a678..9f0710b9d6 100644 --- a/R/scale-continuous.R +++ b/R/scale-continuous.R @@ -85,7 +85,7 @@ scale_x_continuous <- function(name = waiver(), breaks = waiver(), guide = waiver(), position = "bottom", sec.axis = waiver()) { call <- caller_call() - if (is.null(call) || !startsWith(as.character(call[[1]]), "scale_")) { + if (is.null(call) || !any(startsWith(as.character(call[[1]]), "scale_"))) { call <- current_call() } sc <- continuous_scale( @@ -111,7 +111,7 @@ scale_y_continuous <- function(name = waiver(), breaks = waiver(), guide = waiver(), position = "left", sec.axis = waiver()) { call <- caller_call() - if (is.null(call) || !startsWith(as.character(call[[1]]), "scale_")) { + if (is.null(call) || !any(startsWith(as.character(call[[1]]), "scale_"))) { call <- current_call() } sc <- continuous_scale( diff --git a/tests/testthat/test-scales.R b/tests/testthat/test-scales.R index bedf7fb94b..2b1c80729d 100644 --- a/tests/testthat/test-scales.R +++ b/tests/testthat/test-scales.R @@ -648,6 +648,36 @@ test_that("scale functions accurately report their calls", { expect_equal(calls, construct) }) +test_that("scale call is found accurately", { + + call_template <- quote(scale_x_continuous(trans = "log10")) + + sc <- do.call("scale_x_continuous", list(trans = "log10")) + expect_equal(sc$call, call_template) + + sc <- inject(scale_x_continuous(!!!list(trans = "log10"))) + expect_equal(sc$call, call_template) + + sc <- exec("scale_x_continuous", trans = "log10") + expect_equal(sc$call, call_template) + + foo <- function() scale_x_continuous(trans = "log10") + expect_equal(foo()$call, call_template) + + env <- new_environment() + env$bar <- function() scale_x_continuous(trans = "log10") + expect_equal(env$bar()$call, call_template) + + # Now should recognise the outer function + scale_x_new <- function() { + scale_x_continuous(trans = "log10") + } + expect_equal( + scale_x_new()$call, + quote(scale_x_new()) + ) +}) + test_that("training incorrectly appropriately communicates the offenders", { sc <- scale_colour_viridis_d() From 202029b1979c7d92920f2b17fbeb7ddf1d37b208 Mon Sep 17 00:00:00 2001 From: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> Date: Mon, 2 Oct 2023 12:02:20 +0200 Subject: [PATCH 11/21] Delete utilies-table.R (#5426) * Delete utilies-table.R * Update collate directive --- DESCRIPTION | 1 - R/utilities-table.R | 40 ---------------------------------------- 2 files changed, 41 deletions(-) delete mode 100644 R/utilities-table.R diff --git a/DESCRIPTION b/DESCRIPTION index f4b63c3a9f..275e56f047 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -272,7 +272,6 @@ Collate: 'utilities-help.R' 'utilities-matrix.R' 'utilities-resolution.R' - 'utilities-table.R' 'utilities-tidy-eval.R' 'zxx.R' 'zzz.R' diff --git a/R/utilities-table.R b/R/utilities-table.R deleted file mode 100644 index 77d7e83407..0000000000 --- a/R/utilities-table.R +++ /dev/null @@ -1,40 +0,0 @@ -compute_grob_widths <- function(grob_layout, widths) { - cols <- split(grob_layout, grob_layout$l) - widths <- lapply(cols, compute_grob_dimensions, dims = widths) - inject(unit.c(!!!widths)) -} - -compute_grob_heights <- function(grob_layout, heights) { - cols <- split(grob_layout, grob_layout$t) - heights <- lapply(cols, compute_grob_dimensions, dims = heights) - inject(unit.c(!!!heights)) -} - -compute_grob_dimensions <- function(grob_layout, dims) { - # If any don't have explicit dims, then width is NULL - if (!any(grob_layout$type %in% names(dims))) { - return(unit(1, "null")) - } - - grob_layout <- grob_layout[grob_layout$type %in% names(dims), , drop = FALSE] - - dims <- unique0(Map(function(type, pos) { - type_width <- dims[[type]] - if (length(type_width) == 1) type_width else type_width[pos] - }, grob_layout$type, grob_layout$id)) - units <- vapply(dims, is.unit, logical(1)) - - if (all(units)) { - if (all(lapply(dims, attr, "unit") == "null")) unit(max(unlist(dims)), "null") - else inject(max(!!!dims)) - } else { - raw_max <- unit(max(unlist(dims[!units])), "cm") - if (any(units)) { - unit_max <- max(inject(unit.c(!!!dims[units]))) - max(raw_max, unit_max) - } - else { - raw_max - } - } -} From 0e72d9570487768f92f91ba71602efb06db64246 Mon Sep 17 00:00:00 2001 From: Thomas Lin Pedersen Date: Mon, 2 Oct 2023 13:28:56 +0200 Subject: [PATCH 12/21] Simplify scales$add_default (#5409) --- NEWS.md | 2 ++ R/aes-evaluation.R | 3 ++- R/layer.R | 6 +++--- R/scales-.R | 16 ++++------------ 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/NEWS.md b/NEWS.md index 1d95e88137..8e74afe833 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # ggplot2 (development version) +* `stage()` now works correctly, even with aesthetics that do not have scales + (#5408) * `labeller()` now handles unspecified entries from lookup tables (@92amartins, #4599). diff --git a/R/aes-evaluation.R b/R/aes-evaluation.R index 380cce10a8..58310fe8ed 100644 --- a/R/aes-evaluation.R +++ b/R/aes-evaluation.R @@ -311,9 +311,10 @@ strip_stage <- function(expr) { if (is_call(uq_expr, c("after_stat", "after_scale"))) { uq_expr[[2]] } else if (is_call(uq_expr, "stage")) { + uq_expr <- call_match(uq_expr, stage) # Prefer stat mapping if present, otherwise original mapping (fallback to # scale mapping) but there should always be two arguments to stage() - uq_expr$after_stat %||% uq_expr$start %||% (if (is.null(uq_expr$after_scale)) uq_expr[[3]]) %||% uq_expr[[2]] + uq_expr$after_stat %||% uq_expr$start %||% uq_expr$after_scale } else { expr } diff --git a/R/layer.R b/R/layer.R index 98e89540cd..9686aec881 100644 --- a/R/layer.R +++ b/R/layer.R @@ -268,13 +268,13 @@ Layer <- ggproto("Layer", NULL, aesthetics[["group"]] <- self$aes_params$group } - plot$scales$add_defaults(data, aesthetics, plot$plot_env) - # Evaluate aesthetics env <- child_env(baseenv(), stage = stage) evaled <- lapply(aesthetics, eval_tidy, data = data, env = env) evaled <- compact(evaled) + plot$scales$add_defaults(evaled, plot$plot_env) + # Check for discouraged usage in mapping warn_for_aes_extract_usage(aesthetics, data[setdiff(names(data), "PANEL")]) @@ -376,7 +376,7 @@ Layer <- ggproto("Layer", NULL, stat_data <- data_frame0(!!!compact(stat_data)) # Add any new scales, if needed - plot$scales$add_defaults(data, new, plot$plot_env) + plot$scales$add_defaults(stat_data, plot$plot_env) # Transform the values, if the scale say it's ok # (see stat_spoke for one exception) if (self$stat$retransform) { diff --git a/R/scales-.R b/R/scales-.R index 73c490c8a2..2d8ffbfe06 100644 --- a/R/scales-.R +++ b/R/scales-.R @@ -141,23 +141,15 @@ ScalesList <- ggproto("ScalesList", NULL, # `aesthetics` is a list of aesthetic-variable mappings. The name of each # item is the aesthetic, and the value of each item is the variable in data. - add_defaults = function(self, data, aesthetics, env) { - if (is.null(aesthetics)) { - return() - } - names(aesthetics) <- unlist(lapply(names(aesthetics), aes_to_scale)) - - new_aesthetics <- setdiff(names(aesthetics), self$input()) + add_defaults = function(self, data, env) { + new_aesthetics <- setdiff(names(data), self$input()) # No new aesthetics, so no new scales to add if (is.null(new_aesthetics)) { return() } - data_cols <- lapply(aesthetics[new_aesthetics], eval_tidy, data = data) - data_cols <- compact(data_cols) - - for (aes in names(data_cols)) { - self$add(find_scale(aes, data_cols[[aes]], env)) + for (aes in new_aesthetics) { + self$add(find_scale(aes, data[[aes]], env)) } }, From fd35a9e4028cabbc508229714dc27d51771cbe75 Mon Sep 17 00:00:00 2001 From: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> Date: Mon, 2 Oct 2023 14:02:40 +0200 Subject: [PATCH 13/21] Fix for raster resolution (#5412) * coord transformation after determining positions * add tolerance to `resolution()` * Add tests * add news bullet --- NEWS.md | 4 ++ R/geom-raster.R | 3 +- R/utilities-resolution.R | 5 +- .../_snaps/geom-raster/discrete-positions.svg | 60 +++++++++++++++++++ tests/testthat/test-geom-raster.R | 7 +++ tests/testthat/test-utilities.R | 3 + 6 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 tests/testthat/_snaps/geom-raster/discrete-positions.svg diff --git a/NEWS.md b/NEWS.md index 8e74afe833..f747c46d9a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,7 +1,11 @@ # ggplot2 (development version) +* `resolution()` has a small tolerance, preventing spuriously small resolutions + due to rounding errors (@teunbrand, #2516). + * `stage()` now works correctly, even with aesthetics that do not have scales (#5408) + * `labeller()` now handles unspecified entries from lookup tables (@92amartins, #4599). diff --git a/R/geom-raster.R b/R/geom-raster.R index 604e74c90b..b725584082 100644 --- a/R/geom-raster.R +++ b/R/geom-raster.R @@ -92,12 +92,13 @@ GeomRaster <- ggproto("GeomRaster", Geom, "{.fn {snake_class(self)}} only works with {.fn coord_cartesian}" )) } - data <- coord$transform(data, panel_params) # Convert vector of data to raster x_pos <- as.integer((data$x - min(data$x)) / resolution(data$x, FALSE)) y_pos <- as.integer((data$y - min(data$y)) / resolution(data$y, FALSE)) + data <- coord$transform(data, panel_params) + nrow <- max(y_pos) + 1 ncol <- max(x_pos) + 1 diff --git a/R/utilities-resolution.R b/R/utilities-resolution.R index 834e078128..28e54cd969 100644 --- a/R/utilities-resolution.R +++ b/R/utilities-resolution.R @@ -27,6 +27,7 @@ resolution <- function(x, zero = TRUE) { if (zero) { x <- unique0(c(0, x)) } - - min(diff(sort(x))) + d <- diff(sort(x)) + tolerance <- sqrt(.Machine$double.eps) + min(d[d > tolerance]) } diff --git a/tests/testthat/_snaps/geom-raster/discrete-positions.svg b/tests/testthat/_snaps/geom-raster/discrete-positions.svg new file mode 100644 index 0000000000..ee3e5a1491 --- /dev/null +++ b/tests/testthat/_snaps/geom-raster/discrete-positions.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +C +D + + + + +A +B +x +y + +interaction(x, y) + + + + + + + + +A.C +B.C +A.D +B.D +discrete positions + + diff --git a/tests/testthat/test-geom-raster.R b/tests/testthat/test-geom-raster.R index 268a78f3eb..081abc5c20 100644 --- a/tests/testthat/test-geom-raster.R +++ b/tests/testthat/test-geom-raster.R @@ -68,4 +68,11 @@ test_that("geom_raster draws correctly", { expect_doppelganger("irregular categorical", ggplot(df, aes(x, y, fill = factor(col))) + geom_raster() ) + + # Categorical axes ----------------------------------------------------------- + + df <- expand.grid(x = c("A", "B"), y = c("C", "D")) + expect_doppelganger("discrete positions", + ggplot(df, aes(x, y, fill = interaction(x, y))) + geom_raster() + ) }) diff --git a/tests/testthat/test-utilities.R b/tests/testthat/test-utilities.R index effe34464e..2a695d0117 100644 --- a/tests/testthat/test-utilities.R +++ b/tests/testthat/test-utilities.R @@ -173,4 +173,7 @@ test_that("resolution() gives correct answers", { expect_equal(resolution(mapped_discrete(c(4, 6))), 1L) expect_equal(resolution(c(0, 0)), 1L) expect_equal(resolution(c(0.5, 1.5), zero = TRUE), 0.5) + + # resolution has a tolerance + expect_equal(resolution(c(1, 1 + 1000 * .Machine$double.eps, 2)), 1) }) From 88d05175530b6b587d70e62df1301668e79dd6a3 Mon Sep 17 00:00:00 2001 From: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> Date: Mon, 2 Oct 2023 14:32:15 +0200 Subject: [PATCH 14/21] `stat_smooth()` drops failed groups (#5371) * Return NULL when fit fails * Add test * Add news bullet * Guarantee clean error in test * Use `try_fetch()` --- NEWS.md | 3 +++ R/stat-smooth.R | 27 +++++++++++++++++++-------- tests/testthat/test-geom-smooth.R | 16 ++++++++++++++++ tests/testthat/test-stats.R | 8 ++------ 4 files changed, 40 insertions(+), 14 deletions(-) diff --git a/NEWS.md b/NEWS.md index f747c46d9a..374936e7d9 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # ggplot2 (development version) +* Failing to fit or predict in `stat_smooth()` now gives a warning and omits + the failed group, instead of throwing an error (@teunbrand, #5352). + * `resolution()` has a small tolerance, preventing spuriously small resolutions due to rounding errors (@teunbrand, #2516). diff --git a/R/stat-smooth.R b/R/stat-smooth.R index 691d16fa02..a2180f2dc8 100644 --- a/R/stat-smooth.R +++ b/R/stat-smooth.R @@ -171,14 +171,25 @@ StatSmooth <- ggproto("StatSmooth", Stat, method.args$method <- "REML" } - model <- inject(method( - formula, - data = data, - weights = weight, - !!!method.args - )) - - prediction <- predictdf(model, xseq, se, level) + prediction <- try_fetch( + { + model <- inject(method( + formula, + data = data, + weights = weight, + !!!method.args + )) + predictdf(model, xseq, se, level) + }, + error = function(cnd) { + cli::cli_warn("Failed to fit group {data$group[1]}.", parent = cnd) + NULL + } + ) + if (is.null(prediction)) { + return(NULL) + } + prediction$flipped_aes <- flipped_aes flip_data(prediction, flipped_aes) }, diff --git a/tests/testthat/test-geom-smooth.R b/tests/testthat/test-geom-smooth.R index b0f4bbf44c..ca57bd2e38 100644 --- a/tests/testthat/test-geom-smooth.R +++ b/tests/testthat/test-geom-smooth.R @@ -77,6 +77,22 @@ test_that("default smoothing methods for small and large data sets work", { expect_equal(plot_data$y, as.numeric(out)) }) +test_that("geom_smooth() works when one group fails", { + # Group A fails, B succeeds + df <- data_frame0( + x = c(1, 2, 1, 2, 3), + y = c(1, 2, 3, 2, 1), + g = rep(c("A", "B"), 2:3) + ) + p <- ggplot(df, aes(x, y, group = g)) + + geom_smooth(method = "loess", formula = y ~ x) + + suppressWarnings( + expect_warning(ld <- layer_data(p), "Failed to fit group 1") + ) + expect_equal(unique(ld$group), 2) + expect_gte(nrow(ld), 2) +}) # Visual tests ------------------------------------------------------------ diff --git a/tests/testthat/test-stats.R b/tests/testthat/test-stats.R index 2cd71ab089..6c46bb38df 100644 --- a/tests/testthat/test-stats.R +++ b/tests/testthat/test-stats.R @@ -5,13 +5,9 @@ test_that("plot succeeds even if some computation fails", { b1 <- ggplot_build(p1) expect_equal(length(b1$data), 1) - p2 <- p1 + geom_smooth() + p2 <- p1 + stat_summary(fun = function(x) stop("Failed computation")) - # TODO: These multiple warnings should be summarized nicely. Until this gets - # fixed, this test ignores all the following errors than the first one. - suppressWarnings( - expect_warning(b2 <- ggplot_build(p2), "Computation failed") - ) + expect_warning(b2 <- ggplot_build(p2), "Computation failed") expect_equal(length(b2$data), 2) }) From 89204bcf7ffede79e036a8e91db9b95757053878 Mon Sep 17 00:00:00 2001 From: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> Date: Mon, 2 Oct 2023 15:13:35 +0200 Subject: [PATCH 15/21] Device capabilities checker (#5350) * backport isTRUE * Implement `check_device()` * Document * Write tests * Add NEWS bullet * Wrap error-throwing example * skip test for dev capabilities on R < 4.2.0 * Check next device when RStudioGD * Allow testing for specific blending/compositing operation * More vdiffr nuance * Redocument * Misplaced parenthesis * Get out of pickle * Add `maybe` argument * Don't internally discriminate blending/compositing with `op` argument * Cleaner vdiffr solution * Polish docs a bit --- DESCRIPTION | 2 +- NAMESPACE | 1 + NEWS.md | 3 + R/backports.R | 3 +- R/utilities-checks.R | 327 +++++++++++++++++++++++++ man/check_device.Rd | 139 +++++++++++ tests/testthat/test-utilities-checks.R | 96 ++++++++ 7 files changed, 569 insertions(+), 2 deletions(-) create mode 100644 man/check_device.Rd create mode 100644 tests/testthat/test-utilities-checks.R diff --git a/DESCRIPTION b/DESCRIPTION index 275e56f047..c8aa7ce475 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -67,7 +67,7 @@ Suggests: sf (>= 0.7-3), svglite (>= 1.2.0.9001), testthat (>= 3.1.2), - vdiffr (>= 1.0.0), + vdiffr (>= 1.0.6), xml2 Enhances: sp diff --git a/NAMESPACE b/NAMESPACE index eb67c79182..717abb2e18 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -291,6 +291,7 @@ export(benchplot) export(binned_scale) export(borders) export(calc_element) +export(check_device) export(combine_vars) export(continuous_scale) export(coord_cartesian) diff --git a/NEWS.md b/NEWS.md index 374936e7d9..eb6f82c140 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # ggplot2 (development version) +* New function `check_device()` for testing the availability of advanced + graphics features introduced in R 4.1.0 onwards (@teunbrand, #5332). + * Failing to fit or predict in `stat_smooth()` now gives a warning and omits the failed group, instead of throwing an error (@teunbrand, #5352). diff --git a/R/backports.R b/R/backports.R index 549a80f2c9..9f9d1f36df 100644 --- a/R/backports.R +++ b/R/backports.R @@ -17,7 +17,8 @@ if (getRversion() < "3.3") { on_load(backport_unit_methods()) -# isFALSE() is available on R (>=3.5) +# isFALSE() and isTRUE() are available on R (>=3.5) if (getRversion() < "3.5") { isFALSE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && !x + isTRUE <- function(x) is.logical(x) && length(x) == 1L && !is.na(x) && x } diff --git a/R/utilities-checks.R b/R/utilities-checks.R index 5f5ee1231c..3d42703bb5 100644 --- a/R/utilities-checks.R +++ b/R/utilities-checks.R @@ -68,3 +68,330 @@ check_inherits <- function(x, call = call ) } + +#' Check graphics device capabilities +#' +#' This function makes an attempt to estimate whether the graphics device is +#' able to render newer graphics features. +#' +#' @param feature A string naming a graphics device feature. One of: +#' `"clippingPaths"`, `"alpha_masks"`, `"lumi_masks"`, `"compositing"`, +#' `"blending"`, `"transformations"`, `"gradients"`, `"patterns"`, `"paths"` +#' or `"glyphs"`. See the 'Features' section below for an explanation +#' of these terms. +#' @param action A string for what action to take. One of: +#' * `"test"` returns `TRUE` or `FALSE` indicating support of the feature. +#' * `"warn"` also returns a logical, but throws an informative warning when +#' `FALSE`. +#' * `"abort"` throws an error when the device is estimated to not support +#' the feature. +#' @param op A string for a specific operation to test for when `feature` is +#' either `"blending"` or `"compositing"`. If `NULL` (default), support for +#' all known blending or compositing operations is queried. +#' @param maybe A logical of length 1 determining what the return value should +#' be in case the device capabilities cannot be assessed. +#' @param call The execution environment of a currently running function, e.g. +#' [`caller_env()`][rlang::caller_env()]. The function will be mentioned in +#' warnings and error messages as the source of the warning or error. See +#' the `call` argument of [`abort()`][rlang::abort()] for more information. +#' +#' @details +#' The procedure for testing is as follows: +#' +#' * First, the \R version is checked against the version wherein a feature was +#' introduced. +#' * Next, the [dev.capabilities()][grDevices::dev.capabilities()] function is +#' queried for support of the feature. +#' * If that check is ambiguous, the \pkg{svglite} and \pkg{ragg} devices are +#' checked for known support. +#' * Lastly, if there is no answer yet, it is checked whether the device is one +#' of the 'known' devices that supports a feature. +#' +#' @section Features: +#' \describe{ +#' \item{`"clippingPaths"`}{While most devices support rectangular clipping +#' regions, this feature is about the support for clipping to arbitrary paths. +#' It can be used to only display a part of a drawing.} +#' \item{`"alpha_masks"`}{Like clipping regions and paths, alpha masks can also +#' be used to only display a part of a drawing. In particular a +#' semi-transparent mask can be used to display a drawing in the opaque parts +#' of the mask and hide a drawing in transparent part of a mask.} +#' \item{`"lumi_masks`}{Similar to alpha masks, but using the mask's luminance +#' (greyscale value) to determine what is drawn. Light values are opaque and +#' dark values are transparent.} +#' \item{`"compositing"`}{Compositing allows one to control how to drawings +#' are drawn in relation to one another. By default, one drawing is drawn +#' 'over' the previous one, but other operators are possible, like 'clear', +#' 'in' and 'out'.} +#' \item{`"blending"`}{When placing one drawing atop of another, the blend +#' mode determines how the colours of the drawings relate to one another.} +#' \item{`"transformations"`}{Performing an affine transformation on a group +#' can be used to translate, rotate, scale, shear and flip the drawing.} +#' \item{`"gradients"`}{Gradients can be used to show a transition between +#' two or more colours as a fill in a drawing. The checks expects both linear +#' and radial gradients to be supported.} +#' \item{`"patterns"`}{Patterns can be used to display a repeated, tiled +#' drawing as a fill in another drawing.} +#' \item{`"paths"`}{Contrary to 'paths' as polyline or polygon drawings, +#' `"paths"` refers to the ability to fill and stroke collections of +#' drawings.} +#' \item{`"glyphs"`}{Refers to the advanced typesetting feature for +#' controlling the appearance of individual glyphs.} +#' } +#' +#' @section Limitations: +#' +#' * On Windows machines, bitmap devices such as `png()` or `jpeg()` default +#' to `type = "windows"`. At the time of writing, these don't support any +#' new features, in contrast to `type = "cairo"`, which does. Prior to \R +#' version 4.2.0, the capabilities cannot be resolved and the value of the +#' `maybe` argument is returned. +#' * With the exception of the \pkg{ragg} and \pkg{svglite} devices, if the +#' device doesn't report their capabilities via +#' [dev.capabilities()][grDevices::dev.capabilities()], or the \R version is +#' below 4.2.0, the `maybe` value is returned. +#' * Even though patterns and gradients where introduced in \R 4.1.0, they +#' are considered unsupported because providing vectorised patterns and +#' gradients was only introduced later in \R 4.2.0. +#' * When using the RStudio graphics device, the back end is assumed to be the +#' next device on the list. This assumption is typically met by default, +#' unless the device list is purposefully rearranged. +#' +#' @return `TRUE` when the feature is thought to be supported and `FALSE` +#' otherwise. +#' @export +#' @keywords internal +#' +#' @examples +#' # Typically you'd run `check_device()` inside a function that might produce +#' # advanced graphics. +#' # The check is designed for use in control flow statements in the test mode +#' if (check_device("patterns", action = "test")) { +#' print("Yay") +#' } else { +#' print("Nay") +#' } +#' +#' # Automatically throw a warning when unavailable +#' if (check_device("compositing", action = "warn")) { +#' print("Yay") +#' } else { +#' print("Nay") +#' } +#' +#' # Possibly throw an error +#' try(check_device("glyphs", action = "abort")) +check_device = function(feature, action = "warn", op = NULL, maybe = FALSE, + call = caller_env()) { + + check_bool(maybe, allow_na = TRUE) + + action <- arg_match0(action, c("test", "warn", "abort")) + action_fun <- switch( + action, + warn = cli::cli_warn, + abort = cli::cli_abort, + function(...) invisible() + ) + + feature <- arg_match0( + feature, + c("clippingPaths", "alpha_masks", "lumi_masks", "compositing", "blending", + "transformations", "glyphs", "patterns", "gradients", "paths", + ".test_feature") + ) + # Formatting prettier feature names + feat_name <- switch( + feature, + clippingPaths = "clipping paths", + patterns = "tiled patterns", + blending = "blend modes", + gradients = "colour gradients", + glyphs = "typeset glyphs", + paths = "stroking and filling paths", + transformations = "affine transformations", + alpha_masks = "alpha masks", + lumi_masks = "luminance masks", + feature + ) + + # Perform version check + version <- getRversion() + capable <- switch( + feature, + glyphs = version >= "4.3.0", + paths =, transformations =, compositing =, + patterns =, lumi_masks =, blending =, + gradients = version >= "4.2.0", + alpha_masks =, + clippingPaths = version >= "4.1.0", + TRUE + ) + if (isFALSE(capable)) { + action_fun("R {version} does not support {.emph {feature}}.", + call = call) + return(FALSE) + } + + # Grab device for checking + dev_cur <- grDevices::dev.cur() + dev_name <- names(dev_cur) + + if (dev_name == "RStudioGD") { + # RStudio opens RStudioGD as the active graphics device, but the back-end + # appears to be the *next* device. Temporarily set the next device as the + # device to check capabilities. + dev_old <- dev_cur + on.exit(grDevices::dev.set(dev_old), add = TRUE) + dev_cur <- grDevices::dev.set(grDevices::dev.next()) + dev_name <- names(dev_cur) + } + + # For blending/compositing, maybe test a specific operation + if (!is.null(op) && feature %in% c("blending", "compositing")) { + op <- arg_match0(op, c(.blend_ops, .compo_ops)) + .blend_ops <- .compo_ops <- op + feat_name <- paste0("'", gsub("\\.", " ", op), "' ", feat_name) + } + + # The dev.capabilities() approach may work from R 4.2.0 onwards + if (version >= "4.2.0") { + capa <- grDevices::dev.capabilities() + + # Test if device explicitly states that it is capable of this feature + capable <- switch( + feature, + clippingPaths = isTRUE(capa$clippingPaths), + gradients = all(c("LinearGradient", "RadialGradient") %in% capa$patterns), + alpha_masks = "alpha" %in% capa$masks, + lumi_masks = "luminance" %in% capa$masks, + patterns = "TilingPattern" %in% capa$patterns, + compositing = all(.compo_ops %in% capa$compositing), + blending = all(.blend_ops %in% capa$compositing), + transformations = isTRUE(capa$transformations), + paths = isTRUE(capa$paths), + glyphs = isTRUE(capa$glyphs), + NA + ) + if (isTRUE(capable)) { + return(TRUE) + } + + # Test if device explicitly denies that it is capable of this feature + incapable <- switch( + feature, + clippingPaths = isFALSE(capa$clippingPaths), + gradients = !all(is.na(capa$patterns)) && + !all(c("LinearGradient", "RadialGradient") %in% capa$patterns), + alpha_masks = !is.na(capa$masks) && !("alpha" %in% capa$masks), + lumi_masks = !is.na(capa$masks) && !("luminance" %in% capa$masks), + patterns = !is.na(capa$patterns) && !("TilingPattern" %in% capa$patterns), + compositing = !all(is.na(capa$compositing)) && + !all(.compo_ops %in% capa$compositing), + blending = !all(is.na(capa$compositing)) && + !all(.blend_ops %in% capa$compositing), + transformations = isFALSE(capa$transformations), + paths = isFALSE(capa$paths), + glyphs = isFALSE(capa$glyphs), + NA + ) + + if (isTRUE(incapable)) { + action_fun( + "The {.field {dev_name}} device does not support {.emph {feat_name}}.", + call = call + ) + return(FALSE) + } + } + + # Test {ragg}'s capabilities + if (dev_name %in% c("agg_jpeg", "agg_ppm", "agg_png", "agg_tiff")) { + # We return ragg's version number if not installed, so we can suggest to + # install it. + capable <- switch( + feature, + clippingPaths =, alpha_masks =, gradients =, + patterns = if (is_installed("ragg", version = "1.2.0")) TRUE else "1.2.0", + FALSE + ) + if (isTRUE(capable)) { + return(TRUE) + } + if (is.character(capable) && action != "test") { + check_installed( + "ragg", version = capable, + reason = paste0("for graphics support of ", feat_name, ".") + ) + } + action_fun(paste0( + "The {.pkg ragg} package's {.field {dev_name}} device does not support ", + "{.emph {feat_name}}." + ), call = call) + return(FALSE) + } + + # The vdiffr version of the SVG device is known to not support any newer + # features + if (dev_name == "devSVG_vdiffr") { + action_fun( + "The {.pkg vdiffr} package's device does not support {.emph {feat_name}}.", + call = call + ) + return(FALSE) + } + + # The same logic applies to {svglite} but is tested separately in case + # {ragg} and {svglite} diverge at some point. + if (dev_name == "devSVG") { + # We'll return a version number if not installed so we can suggest it + capable <- switch( + feature, + clippingPaths =, gradients =, alpha_masks =, + patterns = if (is_installed("svglite", version = "2.1.0")) TRUE else "2.1.0", + FALSE + ) + + if (isTRUE(capable)) { + return(TRUE) + } + if (is.character(capable) && action != "test") { + check_installed( + "svglite", version = capable, + reason = paste0("for graphics support of ", feat_name, ".") + ) + } + action_fun(paste0( + "The {.pkg {pkg}} package's {.field {dev_name}} device does not ", + "support {.emph {feat_name}}."), call = call + ) + return(FALSE) + } + + # Last resort: list of known support prior to R 4.2.0 + supported <- c("pdf", "cairo_pdf", "cairo_ps", "svg") + if (feature == "compositing") { + supported <- setdiff(supported, "pdf") + } + if (.Platform$OS.type == "unix") { + # These devices *can* be supported on Windows, but would have to have + # type = "cairo", which we can't check. + supported <- c(supported, "bmp", "jpeg", "png", "tiff") + } + if (isTRUE(dev_name %in% supported)) { + return(TRUE) + } + action_fun( + "Unable to check the capabilities of the {.field {dev_name}} device.", + call = call + ) + return(maybe) +} + +.compo_ops <- c("clear", "source", "over", "in", "out", "atop", "dest", + "dest.over", "dest.in", "dest.out", "dest.atop", "xor", "add", + "saturate") + +.blend_ops <- c("multiply", "screen", "overlay", "darken", "lighten", + "color.dodge", "color.burn", "hard.light", "soft.light", + "difference", "exclusion") diff --git a/man/check_device.Rd b/man/check_device.Rd new file mode 100644 index 0000000000..cc09a1de67 --- /dev/null +++ b/man/check_device.Rd @@ -0,0 +1,139 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/utilities-checks.R +\name{check_device} +\alias{check_device} +\title{Check graphics device capabilities} +\usage{ +check_device( + feature, + action = "warn", + op = NULL, + maybe = FALSE, + call = caller_env() +) +} +\arguments{ +\item{feature}{A string naming a graphics device feature. One of: +\code{"clippingPaths"}, \code{"alpha_masks"}, \code{"lumi_masks"}, \code{"compositing"}, +\code{"blending"}, \code{"transformations"}, \code{"gradients"}, \code{"patterns"}, \code{"paths"} +or \code{"glyphs"}. See the 'Features' section below for an explanation +of these terms.} + +\item{action}{A string for what action to take. One of: +\itemize{ +\item \code{"test"} returns \code{TRUE} or \code{FALSE} indicating support of the feature. +\item \code{"warn"} also returns a logical, but throws an informative warning when +\code{FALSE}. +\item \code{"abort"} throws an error when the device is estimated to not support +the feature. +}} + +\item{op}{A string for a specific operation to test for when \code{feature} is +either \code{"blending"} or \code{"compositing"}. If \code{NULL} (default), support for +all known blending or compositing operations is queried.} + +\item{maybe}{A logical of length 1 determining what the return value should +be in case the device capabilities cannot be assessed.} + +\item{call}{The execution environment of a currently running function, e.g. +\code{\link[rlang:stack]{caller_env()}}. The function will be mentioned in +warnings and error messages as the source of the warning or error. See +the \code{call} argument of \code{\link[rlang:abort]{abort()}} for more information.} +} +\value{ +\code{TRUE} when the feature is thought to be supported and \code{FALSE} +otherwise. +} +\description{ +This function makes an attempt to estimate whether the graphics device is +able to render newer graphics features. +} +\details{ +The procedure for testing is as follows: +\itemize{ +\item First, the \R version is checked against the version wherein a feature was +introduced. +\item Next, the \link[grDevices:dev.capabilities]{dev.capabilities()} function is +queried for support of the feature. +\item If that check is ambiguous, the \pkg{svglite} and \pkg{ragg} devices are +checked for known support. +\item Lastly, if there is no answer yet, it is checked whether the device is one +of the 'known' devices that supports a feature. +} +} +\section{Features}{ + +\describe{ +\item{\code{"clippingPaths"}}{While most devices support rectangular clipping +regions, this feature is about the support for clipping to arbitrary paths. +It can be used to only display a part of a drawing.} +\item{\code{"alpha_masks"}}{Like clipping regions and paths, alpha masks can also +be used to only display a part of a drawing. In particular a +semi-transparent mask can be used to display a drawing in the opaque parts +of the mask and hide a drawing in transparent part of a mask.} +\item{\verb{"lumi_masks}}{Similar to alpha masks, but using the mask's luminance +(greyscale value) to determine what is drawn. Light values are opaque and +dark values are transparent.} +\item{\code{"compositing"}}{Compositing allows one to control how to drawings +are drawn in relation to one another. By default, one drawing is drawn +'over' the previous one, but other operators are possible, like 'clear', +'in' and 'out'.} +\item{\code{"blending"}}{When placing one drawing atop of another, the blend +mode determines how the colours of the drawings relate to one another.} +\item{\code{"transformations"}}{Performing an affine transformation on a group +can be used to translate, rotate, scale, shear and flip the drawing.} +\item{\code{"gradients"}}{Gradients can be used to show a transition between +two or more colours as a fill in a drawing. The checks expects both linear +and radial gradients to be supported.} +\item{\code{"patterns"}}{Patterns can be used to display a repeated, tiled +drawing as a fill in another drawing.} +\item{\code{"paths"}}{Contrary to 'paths' as polyline or polygon drawings, +\code{"paths"} refers to the ability to fill and stroke collections of +drawings.} +\item{\code{"glyphs"}}{Refers to the advanced typesetting feature for +controlling the appearance of individual glyphs.} +} +} + +\section{Limitations}{ + +\itemize{ +\item On Windows machines, bitmap devices such as \code{png()} or \code{jpeg()} default +to \code{type = "windows"}. At the time of writing, these don't support any +new features, in contrast to \code{type = "cairo"}, which does. Prior to \R +version 4.2.0, the capabilities cannot be resolved and the value of the +\code{maybe} argument is returned. +\item With the exception of the \pkg{ragg} and \pkg{svglite} devices, if the +device doesn't report their capabilities via +\link[grDevices:dev.capabilities]{dev.capabilities()}, or the \R version is +below 4.2.0, the \code{maybe} value is returned. +\item Even though patterns and gradients where introduced in \R 4.1.0, they +are considered unsupported because providing vectorised patterns and +gradients was only introduced later in \R 4.2.0. +\item When using the RStudio graphics device, the back end is assumed to be the +next device on the list. This assumption is typically met by default, +unless the device list is purposefully rearranged. +} +} + +\examples{ +# Typically you'd run `check_device()` inside a function that might produce +# advanced graphics. +# The check is designed for use in control flow statements in the test mode +if (check_device("patterns", action = "test")) { + print("Yay") +} else { + print("Nay") +} + +# Automatically throw a warning when unavailable +if (check_device("compositing", action = "warn")) { + print("Yay") +} else { + print("Nay") +} + +# Possibly throw an error +try(check_device("glyphs", action = "abort")) +} +\keyword{internal} diff --git a/tests/testthat/test-utilities-checks.R b/tests/testthat/test-utilities-checks.R new file mode 100644 index 0000000000..04dbd79f52 --- /dev/null +++ b/tests/testthat/test-utilities-checks.R @@ -0,0 +1,96 @@ + +test_that("check_device checks R versions correctly", { + + # Most widely supported device + withr::local_pdf() + + # R 4.0.0 doesn't support any new features + with_mocked_bindings( + getRversion = function() package_version("4.0.0"), + expect_warning(check_device("gradients"), "R 4.0.0 does not support"), + .package = "base" + ) + + # R 4.1.0 doesn't support vectorised patterns + with_mocked_bindings( + getRversion = function() package_version("4.1.0"), + expect_warning(check_device("gradients"), "R 4.1.0 does not support"), + .package = "base" + ) + + # R 4.1.0 does support clipping paths + with_mocked_bindings( + getRversion = function() package_version("4.1.0"), + expect_true(check_device("clippingPaths"), "R 4.1.0 does not support"), + .package = "base" + ) + + # Glyphs are only supported in R 4.3.0 onwards + with_mocked_bindings( + getRversion = function() package_version("4.2.0"), + expect_warning(check_device("glyphs"), "R 4.2.0 does not support"), + .package = "base" + ) + + # R 4.2.0 does support vectorised patterns + with_mocked_bindings( + getRversion = function() package_version("4.2.0"), + expect_true(check_device("patterns")), + .package = "base" + ) +}) + +test_that("check_device finds device capabilities", { + skip_if( + getRversion() < "4.2.0", + "R version < 4.2.0 does doesn't have proper `dev.capabilities()`." + ) + withr::local_pdf() + with_mocked_bindings( + dev.capabilities = function() list(clippingPaths = TRUE), + expect_true(check_device("clippingPaths")), + .package = "grDevices" + ) + + with_mocked_bindings( + dev.capabilities = function() list(clippingPaths = FALSE), + expect_warning(check_device("clippingPaths"), "does not support"), + .package = "grDevices" + ) + + with_mocked_bindings( + dev.cur = function() c(foobar = 1), + expect_warning(check_device(".test_feature"), "Unable to check"), + .package = "grDevices" + ) + +}) + +test_that("check_device finds ragg capabilities", { + skip_if( + getRversion() < "4.2.0" || !is_installed("ragg", version = "1.2.0"), + "Cannot test {ragg} capabilities." + ) + tmp <- withr::local_tempfile(fileext = ".tiff") + ragg::agg_tiff(tmp) + + expect_true(check_device("gradients")) + expect_warning(check_device("compositing"), "does not support") + + dev.off() +}) + +test_that("check_device finds svglite capabilities", { + skip_if( + getRversion() < "4.2.0" || !is_installed("svglite", version = "2.1.0"), + "Cannot test {svglite} capabilities." + ) + tmp <- withr::local_tempfile(fileext = ".svg") + withr::local_envvar(TESTTHAT = "false") # To not trigger vdiffr rules + svglite::svglite(tmp) + + expect_true(check_device("gradients")) + expect_warning(check_device("compositing"), "does not support") + + dev.off() +}) From a560c990d147845a5038ba720378b7000f4846c1 Mon Sep 17 00:00:00 2001 From: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> Date: Mon, 2 Oct 2023 15:14:54 +0200 Subject: [PATCH 16/21] Guide training bugfix (#5428) * Ensure scales/aesthetics are parallel * Adapt tests * Add argument names --- R/coord-.R | 5 +++-- R/guides-.R | 27 +++++++++++---------------- tests/testthat/test-guides.R | 11 ++++++++--- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/R/coord-.R b/R/coord-.R index 8944c812ee..d69248a2c6 100644 --- a/R/coord-.R +++ b/R/coord-.R @@ -97,17 +97,18 @@ Coord <- ggproto("Coord", aesthetics <- c("x", "y", "x.sec", "y.sec") names(aesthetics) <- aesthetics is_sec <- grepl("sec$", aesthetics) + scales <- panel_params[aesthetics] # Do guide setup guides <- guides$setup( - panel_params, aesthetics, + scales, aesthetics, default = params$guide_default %||% guide_axis(), missing = params$guide_missing %||% guide_none() ) guide_params <- guides$get_params(aesthetics) # Resolve positions - scale_position <- lapply(panel_params[aesthetics], `[[`, "position") + scale_position <- lapply(scales, `[[`, "position") guide_position <- lapply(guide_params, `[[`, "position") guide_position[!is_sec] <- Map( function(guide, scale) guide %|W|% scale, diff --git a/R/guides-.R b/R/guides-.R index 163559b99c..2117edda62 100644 --- a/R/guides-.R +++ b/R/guides-.R @@ -301,12 +301,19 @@ Guides <- ggproto( horizontal = c("center", "top") ) - # Setup and train on scales + # Extract the non-position scales scales <- scales$non_position_scales()$scales if (length(scales) == 0) { return(no_guides) } - guides <- self$setup(scales) + + # Ensure a 1:1 mapping between aesthetics and scales + aesthetics <- lapply(scales, `[[`, "aesthetics") + scales <- rep.int(scales, lengths(aesthetics)) + aesthetics <- unlist(aesthetics, recursive = FALSE, use.names = FALSE) + + # Setup and train scales + guides <- self$setup(scales, aesthetics = aesthetics) guides$train(scales, theme$legend.direction, labels) if (length(guides$guides) == 0) { return(no_guides) @@ -343,28 +350,16 @@ Guides <- ggproto( default = self$missing, missing = self$missing ) { - - if (is.null(aesthetics)) { - # Aesthetics from scale, as in non-position guides - aesthetics <- lapply(scales, `[[`, "aesthetics") - scale_idx <- rep(seq_along(scales), lengths(aesthetics)) - aesthetics <- unlist(aesthetics, FALSE, FALSE) - } else { - # Scale based on aesthetics, as in position guides - scale_idx <- seq_along(scales)[match(aesthetics, names(scales))] - } - guides <- self$guides # For every aesthetic-scale combination, find and validate guide - new_guides <- lapply(seq_along(scale_idx), function(i) { - idx <- scale_idx[i] + new_guides <- lapply(seq_along(scales), function(idx) { # Find guide for aesthetic-scale combination # Hierarchy is in the order: # plot + guides(XXX) + scale_ZZZ(guide = XXX) > default(i.e., legend) guide <- resolve_guide( - aesthetic = aesthetics[i], + aesthetic = aesthetics[idx], scale = scales[[idx]], guides = guides, default = default, diff --git a/tests/testthat/test-guides.R b/tests/testthat/test-guides.R index ac704fdf79..9531abfa56 100644 --- a/tests/testthat/test-guides.R +++ b/tests/testthat/test-guides.R @@ -178,10 +178,15 @@ test_that("guide merging for guide_legend() works as expected", { scales <- scales_list() scales$add(scale1) scales$add(scale2) + scales <- scales$scales + + aesthetics <- lapply(scales, `[[`, "aesthetics") + scales <- rep.int(scales, lengths(aesthetics)) + aesthetics <- unlist(aesthetics, FALSE, FALSE) guides <- guides_list(NULL) - guides <- guides$setup(scales$scales) - guides$train(scales$scales, "vertical", labs()) + guides <- guides$setup(scales, aesthetics) + guides$train(scales, "vertical", labs()) guides$merge() guides$params } @@ -279,7 +284,7 @@ test_that("legend reverse argument reverses the key", { scale$train(LETTERS[1:4]) guides <- guides_list(NULL) - guides <- guides$setup(list(scale)) + guides <- guides$setup(list(scale), "colour") guides$params[[1]]$reverse <- FALSE guides$train(list(scale), "horizontal", labels = labs()) From 182405b1207bed7cd28ec9e483777c25e5f3c75d Mon Sep 17 00:00:00 2001 From: Pedro Aphalo Date: Wed, 4 Oct 2023 12:23:01 +0300 Subject: [PATCH 17/21] Bug-fix justification with angle in geom_label() (#5424) Now that geom_label() supports rotation with angle, it is necessary to pass the angle as the third argument to compute_just() as it is done in geom_text() to ensure correct text justification. --- R/geom-label.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/geom-label.R b/R/geom-label.R index 343a5ae28e..be6560b7e6 100644 --- a/R/geom-label.R +++ b/R/geom-label.R @@ -74,10 +74,10 @@ GeomLabel <- ggproto("GeomLabel", Geom, data <- coord$transform(data, panel_params) if (is.character(data$vjust)) { - data$vjust <- compute_just(data$vjust, data$y) + data$vjust <- compute_just(data$vjust, data$y, data$x, data$angle) } if (is.character(data$hjust)) { - data$hjust <- compute_just(data$hjust, data$x) + data$hjust <- compute_just(data$hjust, data$x, data$y, data$angle) } if (!inherits(label.padding, "margin")) { label.padding <- rep(label.padding, length.out = 4) From 88357090ea36bcf1f12ad847d2e507c5bc263530 Mon Sep 17 00:00:00 2001 From: Elio Campitelli Date: Wed, 4 Oct 2023 10:36:52 -0300 Subject: [PATCH 18/21] Removes usage of `stat_bin2d()` and similar (#5451) * Removes usage of stat_bin2d * Removes usage of stat_binhex() * Removes geom_bin2d() * Changes name in rd_aesthetics --- R/coord-cartesian-.R | 2 +- R/geom-bin2d.R | 4 ++-- R/geom-count.R | 2 +- R/geom-density2d.R | 2 +- R/geom-hex.R | 6 +++--- R/geom-point.R | 2 +- R/geom-tile.R | 4 ++-- R/stat-binhex.R | 2 +- R/stat-summary-2d.R | 2 +- man/coord_cartesian.Rd | 2 +- man/geom_bin_2d.Rd | 4 ++-- man/geom_count.Rd | 2 +- man/geom_density_2d.Rd | 2 +- man/geom_hex.Rd | 6 +++--- man/geom_point.Rd | 2 +- man/geom_tile.Rd | 4 ++-- man/hmisc.Rd | 8 ++++---- man/stat_summary_2d.Rd | 2 +- tests/testthat/test-stat-bin2d.R | 8 ++++---- 19 files changed, 33 insertions(+), 33 deletions(-) diff --git a/R/coord-cartesian-.R b/R/coord-cartesian-.R index 8451873b84..10ab907147 100644 --- a/R/coord-cartesian-.R +++ b/R/coord-cartesian-.R @@ -49,7 +49,7 @@ #' #' # You can see the same thing with this 2d histogram #' d <- ggplot(diamonds, aes(carat, price)) + -#' stat_bin2d(bins = 25, colour = "white") +#' stat_bin_2d(bins = 25, colour = "white") #' d #' #' # When zooming the scale, the we get 25 new bins that are the same diff --git a/R/geom-bin2d.R b/R/geom-bin2d.R index 281531245c..c49a24fb1b 100644 --- a/R/geom-bin2d.R +++ b/R/geom-bin2d.R @@ -5,14 +5,14 @@ #' rectangle's fill. This is a useful alternative to [geom_point()] #' in the presence of overplotting. #' -#' @eval rd_aesthetics("stat", "bin2d") +#' @eval rd_aesthetics("stat", "bin_2d") #' #' @export #' @inheritParams layer #' @inheritParams geom_point #' @param geom,stat Use to override the default connection between #' `geom_bin_2d()` and `stat_bin_2d()`. -#' @seealso [stat_binhex()] for hexagonal binning +#' @seealso [stat_bin_hex()] for hexagonal binning #' @examples #' d <- ggplot(diamonds, aes(x, y)) + xlim(4, 10) + ylim(4, 10) #' d + geom_bin_2d() diff --git a/R/geom-count.R b/R/geom-count.R index 908f57eb52..977577265a 100644 --- a/R/geom-count.R +++ b/R/geom-count.R @@ -7,7 +7,7 @@ #' @eval rd_aesthetics("geom", "point") #' @param geom,stat Use to override the default connection between #' `geom_count()` and `stat_sum()`. -#' @seealso For continuous `x` and `y`, use [geom_bin2d()]. +#' @seealso For continuous `x` and `y`, use [geom_bin_2d()]. #' @inheritParams layer #' @inheritParams geom_point #' @export diff --git a/R/geom-density2d.R b/R/geom-density2d.R index bf1477ceef..9c21c5d298 100644 --- a/R/geom-density2d.R +++ b/R/geom-density2d.R @@ -9,7 +9,7 @@ #' @eval rd_aesthetics("geom", "density_2d") #' @eval rd_aesthetics("geom", "density_2d_filled") #' @seealso [geom_contour()], [geom_contour_filled()] for information about -#' how contours are drawn; [geom_bin2d()] for another way of dealing with +#' how contours are drawn; [geom_bin_2d()] for another way of dealing with #' overplotting. #' @param geom,stat Use to override the default connection between #' `geom_density_2d()` and `stat_density_2d()`. diff --git a/R/geom-hex.R b/R/geom-hex.R index 0e6af52745..a882979bf1 100644 --- a/R/geom-hex.R +++ b/R/geom-hex.R @@ -3,12 +3,12 @@ #' Divides the plane into regular hexagons, counts the number of cases in #' each hexagon, and then (by default) maps the number of cases to the hexagon #' fill. Hexagon bins avoid the visual artefacts sometimes generated by -#' the very regular alignment of [geom_bin2d()]. +#' the very regular alignment of [geom_bin_2d()]. #' #' @eval rd_aesthetics("geom", "hex") -#' @seealso [stat_bin2d()] for rectangular binning +#' @seealso [stat_bin_2d()] for rectangular binning #' @param geom,stat Override the default connection between `geom_hex()` and -#' `stat_binhex()`. +#' `stat_bin_hex()`. #' @export #' @inheritParams layer #' @inheritParams geom_point diff --git a/R/geom-point.R b/R/geom-point.R index a2e325d518..28e688545c 100644 --- a/R/geom-point.R +++ b/R/geom-point.R @@ -4,7 +4,7 @@ #' useful for displaying the relationship between two continuous variables. #' It can be used to compare one continuous and one categorical variable, or #' two categorical variables, but a variation like [geom_jitter()], -#' [geom_count()], or [geom_bin2d()] is usually more +#' [geom_count()], or [geom_bin_2d()] is usually more #' appropriate. A _bubblechart_ is a scatterplot with a third variable #' mapped to the size of points. #' diff --git a/R/geom-tile.R b/R/geom-tile.R index 264e8c2092..02a696f430 100644 --- a/R/geom-tile.R +++ b/R/geom-tile.R @@ -60,8 +60,8 @@ #' # Inspired by the image-density plots of Ken Knoblauch #' cars <- ggplot(mtcars, aes(mpg, factor(cyl))) #' cars + geom_point() -#' cars + stat_bin2d(aes(fill = after_stat(count)), binwidth = c(3,1)) -#' cars + stat_bin2d(aes(fill = after_stat(density)), binwidth = c(3,1)) +#' cars + stat_bin_2d(aes(fill = after_stat(count)), binwidth = c(3,1)) +#' cars + stat_bin_2d(aes(fill = after_stat(density)), binwidth = c(3,1)) #' #' cars + #' stat_density( diff --git a/R/stat-binhex.R b/R/stat-binhex.R index 96f727380e..3e3f3d5911 100644 --- a/R/stat-binhex.R +++ b/R/stat-binhex.R @@ -48,7 +48,7 @@ StatBinhex <- ggproto("StatBinhex", Stat, compute_group = function(data, scales, binwidth = NULL, bins = 30, na.rm = FALSE) { - check_installed("hexbin", reason = "for `stat_binhex()`") + check_installed("hexbin", reason = "for `stat_bin_hex()`") binwidth <- binwidth %||% hex_binwidth(bins, scales) wt <- data$weight %||% rep(1L, nrow(data)) diff --git a/R/stat-summary-2d.R b/R/stat-summary-2d.R index 6d8c1e61f2..30b61e6f58 100644 --- a/R/stat-summary-2d.R +++ b/R/stat-summary-2d.R @@ -21,7 +21,7 @@ #' \item{`z`}{After binning, the z values of individual data points are no longer available.} #' } #' @seealso [stat_summary_hex()] for hexagonal summarization. -#' [stat_bin2d()] for the binning options. +#' [stat_bin_2d()] for the binning options. #' @inheritParams layer #' @inheritParams geom_point #' @inheritParams stat_bin_2d diff --git a/man/coord_cartesian.Rd b/man/coord_cartesian.Rd index d92f107235..5c39f4d288 100644 --- a/man/coord_cartesian.Rd +++ b/man/coord_cartesian.Rd @@ -66,7 +66,7 @@ p + coord_cartesian(expand = FALSE) # You can see the same thing with this 2d histogram d <- ggplot(diamonds, aes(carat, price)) + - stat_bin2d(bins = 25, colour = "white") + stat_bin_2d(bins = 25, colour = "white") d # When zooming the scale, the we get 25 new bins that are the same diff --git a/man/geom_bin_2d.Rd b/man/geom_bin_2d.Rd index 755f036de3..ff6f279a69 100644 --- a/man/geom_bin_2d.Rd +++ b/man/geom_bin_2d.Rd @@ -96,7 +96,7 @@ in the presence of overplotting. } \section{Aesthetics}{ -\code{stat_bin2d()} understands the following aesthetics (required aesthetics are in bold): +\code{stat_bin_2d()} understands the following aesthetics (required aesthetics are in bold): \itemize{ \item \strong{\code{\link[=aes_position]{x}}} \item \strong{\code{\link[=aes_position]{y}}} @@ -131,5 +131,5 @@ d + geom_bin_2d(bins = 30) d + geom_bin_2d(binwidth = c(0.1, 0.1)) } \seealso{ -\code{\link[=stat_binhex]{stat_binhex()}} for hexagonal binning +\code{\link[=stat_bin_hex]{stat_bin_hex()}} for hexagonal binning } diff --git a/man/geom_count.Rd b/man/geom_count.Rd index f673940bcf..6be60a682d 100644 --- a/man/geom_count.Rd +++ b/man/geom_count.Rd @@ -138,5 +138,5 @@ d + geom_count(aes(size = after_stat(prop), group = clarity)) + scale_size_area(max_size = 10) } \seealso{ -For continuous \code{x} and \code{y}, use \code{\link[=geom_bin2d]{geom_bin2d()}}. +For continuous \code{x} and \code{y}, use \code{\link[=geom_bin_2d]{geom_bin_2d()}}. } diff --git a/man/geom_density_2d.Rd b/man/geom_density_2d.Rd index 58163a88a6..be0fd547aa 100644 --- a/man/geom_density_2d.Rd +++ b/man/geom_density_2d.Rd @@ -266,6 +266,6 @@ d + stat_density_2d(geom = "point", aes(size = after_stat(density)), n = 20, con } \seealso{ \code{\link[=geom_contour]{geom_contour()}}, \code{\link[=geom_contour_filled]{geom_contour_filled()}} for information about -how contours are drawn; \code{\link[=geom_bin2d]{geom_bin2d()}} for another way of dealing with +how contours are drawn; \code{\link[=geom_bin_2d]{geom_bin_2d()}} for another way of dealing with overplotting. } diff --git a/man/geom_hex.Rd b/man/geom_hex.Rd index e107434c54..9ea02ab6e8 100644 --- a/man/geom_hex.Rd +++ b/man/geom_hex.Rd @@ -76,7 +76,7 @@ that define both data and aesthetics and shouldn't inherit behaviour from the default plot specification, e.g. \code{\link[=borders]{borders()}}.} \item{geom, stat}{Override the default connection between \code{geom_hex()} and -\code{stat_binhex()}.} +\code{stat_bin_hex()}.} \item{bins}{numeric vector giving number of bins in both vertical and horizontal directions. Set to 30 by default.} @@ -88,7 +88,7 @@ horizontal directions. Overrides \code{bins} if both set.} Divides the plane into regular hexagons, counts the number of cases in each hexagon, and then (by default) maps the number of cases to the hexagon fill. Hexagon bins avoid the visual artefacts sometimes generated by -the very regular alignment of \code{\link[=geom_bin2d]{geom_bin2d()}}. +the very regular alignment of \code{\link[=geom_bin_2d]{geom_bin_2d()}}. } \section{Aesthetics}{ @@ -133,5 +133,5 @@ d + geom_hex(binwidth = c(.1, 500)) } } \seealso{ -\code{\link[=stat_bin2d]{stat_bin2d()}} for rectangular binning +\code{\link[=stat_bin_2d]{stat_bin_2d()}} for rectangular binning } diff --git a/man/geom_point.Rd b/man/geom_point.Rd index 2247af98a3..6ce1d98b06 100644 --- a/man/geom_point.Rd +++ b/man/geom_point.Rd @@ -70,7 +70,7 @@ The point geom is used to create scatterplots. The scatterplot is most useful for displaying the relationship between two continuous variables. It can be used to compare one continuous and one categorical variable, or two categorical variables, but a variation like \code{\link[=geom_jitter]{geom_jitter()}}, -\code{\link[=geom_count]{geom_count()}}, or \code{\link[=geom_bin2d]{geom_bin2d()}} is usually more +\code{\link[=geom_count]{geom_count()}}, or \code{\link[=geom_bin_2d]{geom_bin_2d()}} is usually more appropriate. A \emph{bubblechart} is a scatterplot with a third variable mapped to the size of points. } diff --git a/man/geom_tile.Rd b/man/geom_tile.Rd index d229e4f628..39a6128cf7 100644 --- a/man/geom_tile.Rd +++ b/man/geom_tile.Rd @@ -178,8 +178,8 @@ ggplot(df, aes(x, y, fill = z)) + # Inspired by the image-density plots of Ken Knoblauch cars <- ggplot(mtcars, aes(mpg, factor(cyl))) cars + geom_point() -cars + stat_bin2d(aes(fill = after_stat(count)), binwidth = c(3,1)) -cars + stat_bin2d(aes(fill = after_stat(density)), binwidth = c(3,1)) +cars + stat_bin_2d(aes(fill = after_stat(count)), binwidth = c(3,1)) +cars + stat_bin_2d(aes(fill = after_stat(density)), binwidth = c(3,1)) cars + stat_density( diff --git a/man/hmisc.Rd b/man/hmisc.Rd index 96fd7bba30..40fe36ca41 100644 --- a/man/hmisc.Rd +++ b/man/hmisc.Rd @@ -29,10 +29,10 @@ These are wrappers around functions from \pkg{Hmisc} designed to make them easier to use with \code{\link[=stat_summary]{stat_summary()}}. See the Hmisc documentation for more details: \itemize{ -\item \code{\link[Hmisc:smean.sd]{Hmisc::smean.cl.boot()}} -\item \code{\link[Hmisc:smean.sd]{Hmisc::smean.cl.normal()}} -\item \code{\link[Hmisc:smean.sd]{Hmisc::smean.sdl()}} -\item \code{\link[Hmisc:smean.sd]{Hmisc::smedian.hilow()}} +\item \code{\link[Hmisc:smean.cl.boot]{Hmisc::smean.cl.boot()}} +\item \code{\link[Hmisc:smean.cl.normal]{Hmisc::smean.cl.normal()}} +\item \code{\link[Hmisc:smean.sdl]{Hmisc::smean.sdl()}} +\item \code{\link[Hmisc:smedian.hilow]{Hmisc::smedian.hilow()}} } } \examples{ diff --git a/man/stat_summary_2d.Rd b/man/stat_summary_2d.Rd index 490cf10caf..b7e1f433e9 100644 --- a/man/stat_summary_2d.Rd +++ b/man/stat_summary_2d.Rd @@ -148,5 +148,5 @@ d + stat_summary_hex(fun = ~ sum(.x^2)) } \seealso{ \code{\link[=stat_summary_hex]{stat_summary_hex()}} for hexagonal summarization. -\code{\link[=stat_bin2d]{stat_bin2d()}} for the binning options. +\code{\link[=stat_bin_2d]{stat_bin_2d()}} for the binning options. } diff --git a/tests/testthat/test-stat-bin2d.R b/tests/testthat/test-stat-bin2d.R index 90af028025..5a30466bff 100644 --- a/tests/testthat/test-stat-bin2d.R +++ b/tests/testthat/test-stat-bin2d.R @@ -1,7 +1,7 @@ test_that("binwidth is respected", { df <- data_frame(x = c(1, 1, 1, 2), y = c(1, 1, 1, 2)) base <- ggplot(df, aes(x, y)) + - stat_bin2d(geom = "tile", binwidth = 0.25) + stat_bin_2d(geom = "tile", binwidth = 0.25) out <- layer_data(base) expect_equal(nrow(out), 2) @@ -10,11 +10,11 @@ test_that("binwidth is respected", { expect_equal(out$xmax, c(1.25, 2), tolerance = 1e-7) p <- ggplot(df, aes(x, y)) + - stat_bin2d(geom = "tile", binwidth = c(0.25, 0.5, 0.75)) + stat_bin_2d(geom = "tile", binwidth = c(0.25, 0.5, 0.75)) expect_snapshot_warning(ggplot_build(p)) p <- ggplot(df, aes(x, y)) + - stat_bin2d(geom = "tile", origin = c(0.25, 0.5, 0.75)) + stat_bin_2d(geom = "tile", origin = c(0.25, 0.5, 0.75)) expect_snapshot_warning(ggplot_build(p)) }) @@ -26,7 +26,7 @@ test_that("breaks override binwidth", { df <- data_frame(x = 0:3, y = 0:3) base <- ggplot(df, aes(x, y)) + - stat_bin2d( + stat_bin_2d( breaks = list(x = integer_breaks, y = NULL), binwidth = c(0.5, 0.5) ) From 6dd9bb66116ea5531c5b649c02f7390387028087 Mon Sep 17 00:00:00 2001 From: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> Date: Mon, 9 Oct 2023 19:09:32 +0200 Subject: [PATCH 19/21] Absent legend titles take up no space (#5452) * ignore absent title * Add test * Add news bullet * Fix snapshot --- NEWS.md | 3 + R/guide-legend.R | 91 ++++++++------ .../_snaps/guides/left-aligned-legend-key.svg | 119 ++++++++++++++++++ tests/testthat/test-guides.R | 16 +++ 4 files changed, 188 insertions(+), 41 deletions(-) create mode 100644 tests/testthat/_snaps/guides/left-aligned-legend-key.svg diff --git a/NEWS.md b/NEWS.md index eb6f82c140..bc1f4059e8 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # ggplot2 (development version) +* Legend titles no longer take up space if they've been removed by setting + `legend.title = element_blank()` (@teunbrand, #3587). + * New function `check_device()` for testing the availability of advanced graphics features introduced in R 4.1.0 onwards (@teunbrand, #5332). diff --git a/R/guide-legend.R b/R/guide-legend.R index 4667e50388..087e3e6fef 100644 --- a/R/guide-legend.R +++ b/R/guide-legend.R @@ -536,28 +536,32 @@ GuideLegend <- ggproto( ) heights <- head(vec_interleave(!!!heights), -1) - # Measure title - title_width <- width_cm(grobs$title) - title_height <- height_cm(grobs$title) - - # Combine title with rest of the sizes based on its position - widths <- switch( - params$title.position, - "left" = c(title_width, hgap, widths), - "right" = c(widths, hgap, title_width), - c(widths, max(0, title_width - sum(widths))) - ) - heights <- switch( - params$title.position, - "top" = c(title_height, vgap, heights), - "bottom" = c(heights, vgap, title_height), - c(heights, max(0, title_height - sum(heights))) - ) + has_title <- !is.zero(grobs$title) + if (has_title) { + # Measure title + title_width <- width_cm(grobs$title) + title_height <- height_cm(grobs$title) + + # Combine title with rest of the sizes based on its position + widths <- switch( + params$title.position, + "left" = c(title_width, hgap, widths), + "right" = c(widths, hgap, title_width), + c(widths, max(0, title_width - sum(widths))) + ) + heights <- switch( + params$title.position, + "top" = c(title_height, vgap, heights), + "bottom" = c(heights, vgap, title_height), + c(heights, max(0, title_height - sum(heights))) + ) + } list( widths = widths, heights = heights, - padding = elements$padding + padding = elements$padding, + has_title = has_title ) }, @@ -603,29 +607,34 @@ GuideLegend <- ggproto( ) # Offset layout based on title position - switch( - params$title.position, - "top" = { - key_row <- key_row + 2 - label_row <- label_row + 2 - title_row <- 2 - title_col <- seq_along(sizes$widths) + 1 - }, - "bottom" = { - title_row <- length(sizes$heights) + 1 - title_col <- seq_along(sizes$widths) + 1 - }, - "left" = { - key_col <- key_col + 2 - label_col <- label_col + 2 - title_row <- seq_along(sizes$heights) + 1 - title_col <- 2 - }, - "right" = { - title_row <- seq_along(sizes$heights) + 1 - title_col <- length(sizes$widths) + 1 - } - ) + if (sizes$has_title) { + switch( + params$title.position, + "top" = { + key_row <- key_row + 2 + label_row <- label_row + 2 + title_row <- 2 + title_col <- seq_along(sizes$widths) + 1 + }, + "bottom" = { + title_row <- length(sizes$heights) + 1 + title_col <- seq_along(sizes$widths) + 1 + }, + "left" = { + key_col <- key_col + 2 + label_col <- label_col + 2 + title_row <- seq_along(sizes$heights) + 1 + title_col <- 2 + }, + "right" = { + title_row <- seq_along(sizes$heights) + 1 + title_col <- length(sizes$widths) + 1 + } + ) + } else { + title_row <- NA + title_col <- NA + } df <- cbind(df, key_row, key_col, label_row, label_col) diff --git a/tests/testthat/_snaps/guides/left-aligned-legend-key.svg b/tests/testthat/_snaps/guides/left-aligned-legend-key.svg new file mode 100644 index 0000000000..386f9c2f08 --- /dev/null +++ b/tests/testthat/_snaps/guides/left-aligned-legend-key.svg @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +10 +15 +20 +25 +30 +35 + + + + + + + + + + + +100 +200 +300 +400 +disp +mpg + + + + + + + +4 +6 +8 +left aligned legend key + + diff --git a/tests/testthat/test-guides.R b/tests/testthat/test-guides.R index 9531abfa56..65ff1a6b4d 100644 --- a/tests/testthat/test-guides.R +++ b/tests/testthat/test-guides.R @@ -495,6 +495,22 @@ test_that("Axis titles won't be blown away by coord_*()", { # expect_doppelganger("guide titles with coord_sf()", plot + coord_sf()) }) +test_that("absent titles don't take up space", { + + p <- ggplot(mtcars, aes(disp, mpg, colour = factor(cyl))) + + geom_point() + + theme( + legend.title = element_blank(), + legend.margin = margin(), + legend.position = "top", + legend.justification = "left", + legend.key = element_rect(colour = "black"), + axis.line = element_line(colour = "black") + ) + + expect_doppelganger("left aligned legend key", p) +}) + test_that("axis guides can be capped", { p <- ggplot(mtcars, aes(hp, disp)) + geom_point() + From bf0c64faabb962fc9d8f0426fe434c903a28ffdd Mon Sep 17 00:00:00 2001 From: Teun van den Brand <49372158+teunbrand@users.noreply.github.com> Date: Fri, 13 Oct 2023 09:00:42 +0200 Subject: [PATCH 20/21] Merge in v3.4.4 to main (#5480) * Cherry-pick from #5327 * Add a NEWS item * Hotfix 3.4.4 (#5449) * is.atomic() --> is.atomic() || is.null() * Polish news * Put is.null() first * Cherrypick rgeos removal from description (#5453) * Remove rgeos from the dependency (#5242) --------- Co-authored-by: Hiroaki Yutani * run revdepcheck * Update CRAN comments * Increment version number to 3.4.4 * Fix Version 3.4.4 NEWS Typo (#5479) Change "the upcoming retirement of rproj, rgeos, and maptools" to "the upcoming retirement of rgdal, rgeos, and maptools" * Increment version number to 3.4.4.9000 --------- Co-authored-by: Hiroaki Yutani Co-authored-by: Thomas Lin Pedersen Co-authored-by: Matt Nield <64328730+matthewjnield@users.noreply.github.com> --- DESCRIPTION | 3 +- NEWS.md | 11 + R/aes-evaluation.R | 6 +- R/aes.R | 2 +- R/fortify-spatial.R | 62 +- cran-comments.md | 71 +- man/fortify.sp.Rd | 8 - revdep/README.md | 183 +- revdep/cran.md | 55 +- revdep/failures.md | 3760 +++++++++++++++++++++++---------- revdep/problems.md | 376 +--- tests/testthat/test-fortify.R | 13 +- 12 files changed, 2971 insertions(+), 1579 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index c8aa7ce475..0f931609d9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: ggplot2 -Version: 3.4.3.9000 +Version: 3.4.4.9000 Title: Create Elegant Data Visualisations Using the Grammar of Graphics Authors@R: c( person("Hadley", "Wickham", , "hadley@posit.co", role = "aut", @@ -54,7 +54,6 @@ Suggests: knitr, mapproj, maps, - maptools, multcomp, munsell, nlme, diff --git a/NEWS.md b/NEWS.md index bc1f4059e8..254c49abd1 100644 --- a/NEWS.md +++ b/NEWS.md @@ -155,6 +155,17 @@ duplicated coordinates (@teunbrand, #5215). * Improve performance of layers without positional scales (@zeehio, #4990) +# ggplot2 3.4.4 + +This hotfix release adapts to a change in r-devel's `base::is.atomic()` and +the upcoming retirement of maptools. + +* `fortify()` for sp objects (e.g., `SpatialPolygonsDataFrame`) is now deprecated + and will be removed soon in support of [the upcoming retirement of rgdal, rgeos, + and maptools](https://r-spatial.org/r/2023/05/15/evolution4.html). In advance + of the whole removal, `fortify(, region = ...)` + no longer works as of this version (@yutannihilation, #5244). + # ggplot2 3.4.3 This hotfix release addresses a version comparison change in r-devel. There are no user-facing or breaking changes. diff --git a/R/aes-evaluation.R b/R/aes-evaluation.R index 58310fe8ed..e128fd2c15 100644 --- a/R/aes-evaluation.R +++ b/R/aes-evaluation.R @@ -226,7 +226,7 @@ is_calculated <- function(x, warn = FALSE) { return(TRUE) } # Support of old recursive behaviour - if (is.atomic(x)) { + if (is.null(x) || is.atomic(x)) { FALSE } else if (is.symbol(x)) { res <- is_dotted_var(as.character(x)) @@ -266,7 +266,7 @@ is_staged <- function(x) { # Strip dots from expressions strip_dots <- function(expr, env, strip_pronoun = FALSE) { - if (is.atomic(expr)) { + if (is.null(expr) || is.atomic(expr)) { expr } else if (is.name(expr)) { expr_ch <- as.character(expr) @@ -324,7 +324,7 @@ strip_stage <- function(expr) { make_labels <- function(mapping) { default_label <- function(aesthetic, mapping) { # e.g., geom_smooth(aes(colour = "loess")) or aes(y = NULL) - if (is.atomic(mapping)) { + if (is.null(mapping) || is.atomic(mapping)) { return(aesthetic) } mapping <- strip_stage(mapping) diff --git a/R/aes.R b/R/aes.R index fc545c4198..9ce54cbd47 100644 --- a/R/aes.R +++ b/R/aes.R @@ -285,7 +285,7 @@ aes_ <- function(x, y, ...) { as_quosure_aes <- function(x) { if (is.formula(x) && length(x) == 2) { as_quosure(x) - } else if (is.call(x) || is.name(x) || is.atomic(x)) { + } else if (is.null(x) || is.call(x) || is.name(x) || is.atomic(x)) { new_aesthetic(x, caller_env) } else { cli::cli_abort("Aesthetic must be a one-sided formula, call, name, or constant.") diff --git a/R/fortify-spatial.R b/R/fortify-spatial.R index 3e549cc23f..6fe7392a37 100644 --- a/R/fortify-spatial.R +++ b/R/fortify-spatial.R @@ -9,32 +9,31 @@ #' @param ... not used by this method #' @keywords internal #' @name fortify.sp -#' @examples -#' if (require("maptools")) { -#' sids <- system.file("shapes/sids.shp", package="maptools") -#' nc1 <- readShapePoly(sids, -#' proj4string = CRS("+proj=longlat +datum=NAD27")) -#' nc1_df <- fortify(nc1) -#' } NULL #' @rdname fortify.sp #' @export #' @method fortify SpatialPolygonsDataFrame fortify.SpatialPolygonsDataFrame <- function(model, data, region = NULL, ...) { + deprecate_warn0("3.4.4", + I("`fortify()`"), + details = "Please migrate to sf." + ) + attr <- as.data.frame(model) # If not specified, split into regions based on polygons if (is.null(region)) { - coords <- lapply(model@polygons,fortify) + # Suppress duplicated warnings + withr::with_options(list(lifecycle_verbosity = "quiet"), { + coords <- lapply(model@polygons,fortify) + }) coords <- vec_rbind0(!!!coords) cli::cli_inform("Regions defined for each Polygons") } else { - cp <- sp::polygons(model) - - # Union together all polygons that make up a region - unioned <- maptools::unionSpatialPolygons(cp, attr[, region]) - coords <- fortify(unioned) - coords$order <- 1:nrow(coords) + lifecycle::deprecate_stop("3.4.4", + I("`fortify(, region = ...)` is defunct'"), + details = "Please migrate to sf." + ) } coords } @@ -43,7 +42,15 @@ fortify.SpatialPolygonsDataFrame <- function(model, data, region = NULL, ...) { #' @export #' @method fortify SpatialPolygons fortify.SpatialPolygons <- function(model, data, ...) { - polys <- lapply(model@polygons, fortify) + deprecate_warn0("3.4.4", + I("`fortify()`"), + details = "Please migrate to sf." + ) + + # Suppress duplicated warnings + withr::with_options(list(lifecycle_verbosity = "quiet"), { + polys <- lapply(model@polygons, fortify) + }) vec_rbind0(!!!polys) } @@ -51,6 +58,11 @@ fortify.SpatialPolygons <- function(model, data, ...) { #' @export #' @method fortify Polygons fortify.Polygons <- function(model, data, ...) { + deprecate_warn0("3.4.4", + I("`fortify()`"), + details = "Please migrate to sf." + ) + subpolys <- model@Polygons pieces <- lapply(seq_along(subpolys), function(i) { df <- fortify(subpolys[[model@plotOrder[i]]]) @@ -70,6 +82,11 @@ fortify.Polygons <- function(model, data, ...) { #' @export #' @method fortify Polygon fortify.Polygon <- function(model, data, ...) { + deprecate_warn0("3.4.4", + I("`fortify()`"), + details = "Please migrate to sf." + ) + df <- as.data.frame(model@coords) names(df) <- c("long", "lat") df$order <- 1:nrow(df) @@ -81,6 +98,11 @@ fortify.Polygon <- function(model, data, ...) { #' @export #' @method fortify SpatialLinesDataFrame fortify.SpatialLinesDataFrame <- function(model, data, ...) { + deprecate_warn0("3.4.4", + I("`fortify()`"), + details = "Please migrate to sf." + ) + lines <- lapply(model@lines, fortify) vec_rbind0(!!!lines) } @@ -89,6 +111,11 @@ fortify.SpatialLinesDataFrame <- function(model, data, ...) { #' @export #' @method fortify Lines fortify.Lines <- function(model, data, ...) { + deprecate_warn0("3.4.4", + I("`fortify()`"), + details = "Please migrate to sf." + ) + lines <- model@Lines pieces <- lapply(seq_along(lines), function(i) { df <- fortify(lines[[i]]) @@ -108,6 +135,11 @@ fortify.Lines <- function(model, data, ...) { #' @export #' @method fortify Line fortify.Line <- function(model, data, ...) { + deprecate_warn0("3.4.4", + I("`fortify()`"), + details = "Please migrate to sf." + ) + df <- as.data.frame(model@coords) names(df) <- c("long", "lat") df$order <- 1:nrow(df) diff --git a/cran-comments.md b/cran-comments.md index 15f70e610b..78f461ac54 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,5 +1,66 @@ -This is a patch release responding to a request from CRAN about numeric -version comparisons in R-devel. It also includes a workaround for changes -in the `stats::density()` function in R-devel that affected visual tests. -There are no user facing changes, so no reverse dependencies are expected to -be affected. +This is a patch release responding to changes in R-devel concerning the behavior +of `is.atomic()`. Further, it contains the removal of maptools and rgeos which +is set for archival soon + +## revdepcheck results + +We checked 4771 reverse dependencies (4716 from CRAN + 55 from Bioconductor), comparing R CMD check results across CRAN and dev versions of this package. + + * We saw 2 new problems + * We failed to check 42 packages + +Issues with CRAN packages are summarised below. + +### New problems +(This reports the first line of each new failure) + +* jfa + checking re-building of vignette outputs ... WARNING + +* SCORPIUS + checking tests ... ERROR + +### Failed to check + +* ale (NA) +* aPEAR (NA) +* bayesdfa (NA) +* BrailleR (NA) +* CausalImpact (NA) +* CensMFM (NA) +* cinaR (NA) +* fdacluster (NA) +* genekitr (NA) +* ggPMX (NA) +* grandR (NA) +* HeckmanEM (NA) +* immcp (NA) +* loon.ggplot (NA) +* MACP (NA) +* MarketMatching (NA) +* MARVEL (NA) +* MSclassifR (NA) +* nlmixr2 (NA) +* nlmixr2extra (NA) +* nlmixr2plot (NA) +* nlmixr2rpt (NA) +* numbat (NA) +* oHMMed (NA) +* OlinkAnalyze (NA) +* OpenMx (NA) +* phylosem (NA) +* PsychWordVec (NA) +* RcppCensSpatial (NA) +* rmsb (NA) +* rstanarm (NA) +* RVA (NA) +* SCpubr (NA) +* SSVS (NA) +* streamDAG (NA) +* TestAnaAPP (NA) +* tidySEM (NA) +* tinyarray (NA) +* TOmicsVis (NA) +* valse (NA) +* vivid (NA) +* xpose.nlmixr2 (NA) diff --git a/man/fortify.sp.Rd b/man/fortify.sp.Rd index 31f6b6fe65..af1a587f5d 100644 --- a/man/fortify.sp.Rd +++ b/man/fortify.sp.Rd @@ -38,12 +38,4 @@ To figure out the correct variable name for region, inspect \code{as.data.frame(model)}. } -\examples{ -if (require("maptools")) { - sids <- system.file("shapes/sids.shp", package="maptools") - nc1 <- readShapePoly(sids, - proj4string = CRS("+proj=longlat +datum=NAD27")) - nc1_df <- fortify(nc1) -} -} \keyword{internal} diff --git a/revdep/README.md b/revdep/README.md index 2018c6f4e1..f33e525c66 100644 --- a/revdep/README.md +++ b/revdep/README.md @@ -1,84 +1,111 @@ # Revdeps -## Failed to check (64) +## Failed to check (97) -|package |version |error |warning |note | -|:--------------------------|:-------|:------|:-------|:----| -|NA |? | | | | -|beadplexr |? | | | | -|CausalImpact |? | | | | -|CensMFM |? | | | | -|cinaR |? | | | | -|NA |? | | | | -|NA |? | | | | -|ctsem |3.7.6 |1 | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|genekitr |? | | | | -|[ggh4x](failures.md#ggh4x) |0.2.3 |__+1__ | | | -|NA |? | | | | -|glmmPen |1.5.3.0 |1 | | | -|grandR |? | | | | -|immcp |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|loon.ggplot |? | | | | -|MACP |? | | | | -|NA |? | | | | -|MarketMatching |? | | | | -|MARVEL |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|nlmixr2rpt |? | | | | -|numbat |? | | | | -|NA |? | | | | -|OlinkAnalyze |? | | | | -|OpenMx |? | | | | -|Platypus |? | | | | -|PsychWordVec |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|RcppCensSpatial |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | -|rstan |2.21.8 |1 | | | -|RVA |? | | | | -|rxode2 |2.0.11 |1 | |1 | -|NA |? | | | | -|SCpubr |? | | | | -|tidySEM |? | | | | -|NA |? | | | | -|tinyarray |? | | | | -|valse |0.1-0 |1 | | | -|NA |? | | | | -|NA |? | | | | -|vivid |? | | | | -|NA |? | | | | -|NA |? | | | | -|NA |? | | | | +|package |version |error |warning |note | +|:---------------|:-------|:-----|:-------|:----| +|NA |? | | | | +|NA |? | | | | +|ale |0.1.0 |1 | | | +|aPEAR |? | | | | +|NA |? | | | | +|bayesdfa |1.2.0 |1 | | | +|NA |? | | | | +|BrailleR |1.0.2 |1 | | | +|NA |? | | | | +|CausalImpact |? | | | | +|CensMFM |? | | | | +|cinaR |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|fdacluster |0.3.0 |1 | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|genekitr |? | | | | +|NA |? | | | | +|ggPMX |? | | | | +|NA |? | | | | +|grandR |? | | | | +|HeckmanEM |? | | | | +|immcp |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|loon.ggplot |? | | | | +|MACP |? | | | | +|NA |? | | | | +|MarketMatching |? | | | | +|MARVEL |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|MSclassifR |? | | | | +|nlmixr2 |? | | | | +|nlmixr2extra |? | | | | +|nlmixr2plot |? | | | | +|nlmixr2rpt |? | | | | +|NA |? | | | | +|numbat |? | | | | +|NA |? | | | | +|oHMMed |? | | | | +|OlinkAnalyze |? | | | | +|OpenMx |? | | | | +|phylosem |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|PsychWordVec |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|RcppCensSpatial |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|rmsb |1.0-0 |1 | | | +|rstanarm |2.26.1 |1 | | | +|NA |? | | | | +|RVA |? | | | | +|NA |? | | | | +|SCpubr |? | | | | +|NA |? | | | | +|NA |? | | | | +|SSVS |? | | | | +|streamDAG |? | | | | +|TestAnaAPP |? | | | | +|tidySEM |? | | | | +|NA |? | | | | +|tinyarray |? | | | | +|TOmicsVis |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|NA |? | | | | +|valse |0.1-0 |1 | | | +|NA |? | | | | +|NA |? | | | | +|vivid |? | | | | +|NA |? | | | | +|NA |? | | | | +|xpose.nlmixr2 |? | | | | +|NA |? | | | | -## New problems (8) +## New problems (2) -|package |version |error |warning |note | -|:--------------------------------------|:-------|:------|:-------|:----| -|[afex](problems.md#afex) |1.2-1 | |__+1__ | | -|[dalmatian](problems.md#dalmatian) |1.0.0 | |__+1__ | | -|[DriveML](problems.md#driveml) |0.1.5 | |__+1__ |1 | -|[EcoEnsemble](problems.md#ecoensemble) |1.0.2 | |__+1__ |3 | -|[ggtern](problems.md#ggtern) |3.4.1 | |__+1__ |2 | -|[siland](problems.md#siland) |2.0.5 | |__+1__ | | -|[TCIU](problems.md#tciu) |1.2.2 | |__+1__ |1 | -|[xpose](problems.md#xpose) |0.4.15 |__+1__ | | | +|package |version |error |warning |note | +|:--------------------------------|:-------|:------|:-------|:----| +|[jfa](problems.md#jfa) |0.7.0 | |__+1__ |3 | +|[SCORPIUS](problems.md#scorpius) |1.0.9 |__+1__ | | | diff --git a/revdep/cran.md b/revdep/cran.md index 4ad01b49d2..ca9d093bbe 100644 --- a/revdep/cran.md +++ b/revdep/cran.md @@ -1,67 +1,62 @@ ## revdepcheck results -We checked 4503 reverse dependencies (4468 from CRAN + 35 from Bioconductor), comparing R CMD check results across CRAN and dev versions of this package. +We checked 4771 reverse dependencies (4716 from CRAN + 55 from Bioconductor), comparing R CMD check results across CRAN and dev versions of this package. - * We saw 8 new problems - * We failed to check 29 packages + * We saw 2 new problems + * We failed to check 42 packages Issues with CRAN packages are summarised below. ### New problems (This reports the first line of each new failure) -* afex +* jfa checking re-building of vignette outputs ... WARNING -* dalmatian - checking re-building of vignette outputs ... WARNING - -* DriveML - checking re-building of vignette outputs ... WARNING - -* EcoEnsemble - checking re-building of vignette outputs ... WARNING - -* ggtern - checking Rd files ... WARNING - -* siland - checking re-building of vignette outputs ... WARNING - -* TCIU - checking re-building of vignette outputs ... WARNING - -* xpose +* SCORPIUS checking tests ... ERROR ### Failed to check -* beadplexr (NA) +* ale (NA) +* aPEAR (NA) +* bayesdfa (NA) +* BrailleR (NA) * CausalImpact (NA) * CensMFM (NA) * cinaR (NA) -* ctsem (NA) +* fdacluster (NA) * genekitr (NA) -* ggh4x (NA) -* glmmPen (NA) +* ggPMX (NA) * grandR (NA) +* HeckmanEM (NA) * immcp (NA) * loon.ggplot (NA) * MACP (NA) * MarketMatching (NA) * MARVEL (NA) +* MSclassifR (NA) +* nlmixr2 (NA) +* nlmixr2extra (NA) +* nlmixr2plot (NA) * nlmixr2rpt (NA) * numbat (NA) +* oHMMed (NA) * OlinkAnalyze (NA) * OpenMx (NA) -* Platypus (NA) +* phylosem (NA) * PsychWordVec (NA) * RcppCensSpatial (NA) -* rstan (NA) +* rmsb (NA) +* rstanarm (NA) * RVA (NA) -* rxode2 (NA) * SCpubr (NA) +* SSVS (NA) +* streamDAG (NA) +* TestAnaAPP (NA) * tidySEM (NA) * tinyarray (NA) +* TOmicsVis (NA) * valse (NA) * vivid (NA) +* xpose.nlmixr2 (NA) diff --git a/revdep/failures.md b/revdep/failures.md index 389a61d7e6..74fbd69701 100644 --- a/revdep/failures.md +++ b/revdep/failures.md @@ -33,17 +33,16 @@ Run `cloud_details(, "NA")` for more info ``` -# beadplexr +# NA
-* Version: 0.4.1 +* Version: NA * GitHub: NA -* Source code: https://github.com/cran/beadplexr -* Date/Publication: 2022-03-05 13:50:02 UTC -* Number of recursive dependencies: 128 +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "beadplexr")` for more info +Run `cloud_details(, "NA")` for more info
@@ -52,27 +51,7 @@ Run `cloud_details(, "beadplexr")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/beadplexr/new/beadplexr.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘beadplexr/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘beadplexr’ version ‘0.4.1’ -* package encoding: UTF-8 -* checking package namespace information ... OK -... - Running ‘testthat.R’ -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘cba_macsplex_example.Rmd’ using ‘UTF-8’... OK - ‘legendplex_analysis.Rmd’ using ‘UTF-8’... OK - ‘preparing_flow_data.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK -* DONE -Status: 1 NOTE + @@ -82,108 +61,82 @@ Status: 1 NOTE ### CRAN ``` -* using log directory ‘/tmp/workdir/beadplexr/old/beadplexr.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘beadplexr/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘beadplexr’ version ‘0.4.1’ -* package encoding: UTF-8 -* checking package namespace information ... OK -... - Running ‘testthat.R’ -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘cba_macsplex_example.Rmd’ using ‘UTF-8’... OK - ‘legendplex_analysis.Rmd’ using ‘UTF-8’... OK - ‘preparing_flow_data.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK -* DONE -Status: 1 NOTE + ``` -# CausalImpact +# ale
-* Version: 1.3.0 -* GitHub: NA -* Source code: https://github.com/cran/CausalImpact -* Date/Publication: 2022-11-09 08:40:40 UTC -* Number of recursive dependencies: 79 +* Version: 0.1.0 +* GitHub: https://github.com/Tripartio/ale +* Source code: https://github.com/cran/ale +* Date/Publication: 2023-08-29 16:30:15 UTC +* Number of recursive dependencies: 76 -Run `cloud_details(, "CausalImpact")` for more info +Run `cloud_details(, "ale")` for more info
-## Error before installation - -### Devel - -``` -* using log directory ‘/tmp/workdir/CausalImpact/new/CausalImpact.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘CausalImpact/DESCRIPTION’ ... OK -* this is package ‘CausalImpact’ version ‘1.3.0’ -* checking package namespace information ... OK -* checking package dependencies ... ERROR -Packages required but not available: 'bsts', 'Boom' +## In both -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR +* checking whether package ‘ale’ can be installed ... ERROR + ``` + Installation failed. + See ‘/tmp/workdir/ale/new/ale.Rcheck/00install.out’ for details. + ``` +## Installation +### Devel +``` +* installing *source* package ‘ale’ ... +** package ‘ale’ successfully unpacked and MD5 sums checked +** using staged installation +** R +Error in parse(outFile) : + /tmp/workdir/ale/new/ale.Rcheck/00_pkg_src/ale/R/ale_core.R:720:22: unexpected input +719: }) |> +720: c(0, y = _ + ^ +ERROR: unable to collate and parse R files for package ‘ale’ +* removing ‘/tmp/workdir/ale/new/ale.Rcheck/ale’ ``` ### CRAN ``` -* using log directory ‘/tmp/workdir/CausalImpact/old/CausalImpact.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘CausalImpact/DESCRIPTION’ ... OK -* this is package ‘CausalImpact’ version ‘1.3.0’ -* checking package namespace information ... OK -* checking package dependencies ... ERROR -Packages required but not available: 'bsts', 'Boom' - -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR - - - +* installing *source* package ‘ale’ ... +** package ‘ale’ successfully unpacked and MD5 sums checked +** using staged installation +** R +Error in parse(outFile) : + /tmp/workdir/ale/old/ale.Rcheck/00_pkg_src/ale/R/ale_core.R:720:22: unexpected input +719: }) |> +720: c(0, y = _ + ^ +ERROR: unable to collate and parse R files for package ‘ale’ +* removing ‘/tmp/workdir/ale/old/ale.Rcheck/ale’ ``` -# CensMFM +# aPEAR
-* Version: 3.0 +* Version: 1.0.0 * GitHub: NA -* Source code: https://github.com/cran/CensMFM -* Date/Publication: 2023-01-30 14:00:10 UTC -* Number of recursive dependencies: 41 +* Source code: https://github.com/cran/aPEAR +* Date/Publication: 2023-06-12 18:10:13 UTC +* Number of recursive dependencies: 169 -Run `cloud_details(, "CensMFM")` for more info +Run `cloud_details(, "aPEAR")` for more info
@@ -192,23 +145,27 @@ Run `cloud_details(, "CensMFM")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/CensMFM/new/CensMFM.Rcheck’ +* using log directory ‘/tmp/workdir/aPEAR/new/aPEAR.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘CensMFM/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘CensMFM’ version ‘3.0’ +* checking for file ‘aPEAR/DESCRIPTION’ ... OK +* this is package ‘aPEAR’ version ‘1.0.0’ * package encoding: UTF-8 * checking package namespace information ... OK -* checking package dependencies ... ERROR -Packages required but not available: 'MomTrunc', 'tlrmvnmvt' +* checking package dependencies ... NOTE +... +--- failed re-building ‘aPEAR-vignette.Rmd’ + +SUMMARY: processing the following file failed: + ‘aPEAR-vignette.Rmd’ + +Error: Vignette re-building failed. +Execution halted -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. * DONE -Status: 1 ERROR +Status: 1 WARNING, 1 NOTE @@ -218,40 +175,43 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/CensMFM/old/CensMFM.Rcheck’ +* using log directory ‘/tmp/workdir/aPEAR/old/aPEAR.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘CensMFM/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘CensMFM’ version ‘3.0’ +* checking for file ‘aPEAR/DESCRIPTION’ ... OK +* this is package ‘aPEAR’ version ‘1.0.0’ * package encoding: UTF-8 * checking package namespace information ... OK -* checking package dependencies ... ERROR -Packages required but not available: 'MomTrunc', 'tlrmvnmvt' +* checking package dependencies ... NOTE +... +--- failed re-building ‘aPEAR-vignette.Rmd’ + +SUMMARY: processing the following file failed: + ‘aPEAR-vignette.Rmd’ + +Error: Vignette re-building failed. +Execution halted -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. * DONE -Status: 1 ERROR +Status: 1 WARNING, 1 NOTE ``` -# cinaR +# NA
-* Version: 0.2.3 -* GitHub: https://github.com/eonurk/cinaR -* Source code: https://github.com/cran/cinaR -* Date/Publication: 2022-05-18 14:00:09 UTC -* Number of recursive dependencies: 179 +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "cinaR")` for more info +Run `cloud_details(, "NA")` for more info
@@ -260,23 +220,7 @@ Run `cloud_details(, "cinaR")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/cinaR/new/cinaR.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘cinaR/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘cinaR’ version ‘0.2.3’ -* package encoding: UTF-8 -* checking package namespace information ... OK -* checking package dependencies ... ERROR -Package required but not available: ‘ChIPseeker’ -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR @@ -286,61 +230,88 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/cinaR/old/cinaR.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘cinaR/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘cinaR’ version ‘0.2.3’ -* package encoding: UTF-8 -* checking package namespace information ... OK -* checking package dependencies ... ERROR -Package required but not available: ‘ChIPseeker’ -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR ``` -# NA +# bayesdfa
-* Version: NA -* GitHub: NA -* Source code: https://github.com/cran/NA -* Number of recursive dependencies: 0 +* Version: 1.2.0 +* GitHub: https://github.com/fate-ewi/bayesdfa +* Source code: https://github.com/cran/bayesdfa +* Date/Publication: 2021-09-28 13:20:02 UTC +* Number of recursive dependencies: 86 -Run `cloud_details(, "NA")` for more info +Run `cloud_details(, "bayesdfa")` for more info
-## Error before installation +## In both -### Devel +* checking whether package ‘bayesdfa’ can be installed ... ERROR + ``` + Installation failed. + See ‘/tmp/workdir/bayesdfa/new/bayesdfa.Rcheck/00install.out’ for details. + ``` -``` +## Installation +### Devel +``` +* installing *source* package ‘bayesdfa’ ... +** package ‘bayesdfa’ successfully unpacked and MD5 sums checked +** using staged installation +** libs +g++ -std=gnu++17 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I"../inst/include" -I"/opt/R/4.1.1/lib/R/site-library/StanHeaders/include/src" -DBOOST_DISABLE_ASSERTS -DEIGEN_NO_DEBUG -DBOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error -DUSE_STANC3 -D_HAS_AUTO_PTR_ETC=0 -I'/opt/R/4.1.1/lib/R/site-library/BH/include' -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppEigen/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppParallel/include' -I'/opt/R/4.1.1/lib/R/site-library/rstan/include' -I'/opt/R/4.1.1/lib/R/site-library/StanHeaders/include' -I/usr/local/include -I'/opt/R/4.1.1/lib/R/site-library/RcppParallel/include' -D_REENTRANT -DSTAN_THREADS -fpic -g -O2 -c RcppExports.cpp -o RcppExports.o +In file included from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/Core:397, + from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/Dense:1, + from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30, +... +/opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/src/Core/ProductEvaluators.h:35:90: required from ‘Eigen::internal::evaluator >::evaluator(const XprType&) [with Lhs = Eigen::Product, const Eigen::CwiseNullaryOp, const Eigen::Matrix >, const Eigen::Transpose > >, Eigen::Matrix, 0>; Rhs = Eigen::Matrix; int Options = 0; Eigen::internal::evaluator >::XprType = Eigen::Product, const Eigen::CwiseNullaryOp, const Eigen::Matrix >, const Eigen::Transpose > >, Eigen::Matrix, 0>, Eigen::Matrix, 0>]’ +/opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Product.h:132:22: required from ‘Eigen::internal::dense_product_base::operator const Scalar() const [with Lhs = Eigen::Product, const Eigen::CwiseNullaryOp, const Eigen::Matrix >, const Eigen::Transpose > >, Eigen::Matrix, 0>; Rhs = Eigen::Matrix; int Option = 0; Eigen::internal::dense_product_base::Scalar = double]’ +/opt/R/4.1.1/lib/R/site-library/StanHeaders/include/src/stan/mcmc/hmc/hamiltonians/dense_e_metric.hpp:22:56: required from ‘double stan::mcmc::dense_e_metric::T(stan::mcmc::dense_e_point&) [with Model = model_dfa_namespace::model_dfa; BaseRNG = boost::random::additive_combine_engine, boost::random::linear_congruential_engine >]’ +/opt/R/4.1.1/lib/R/site-library/StanHeaders/include/src/stan/mcmc/hmc/hamiltonians/dense_e_metric.hpp:21:10: required from here +/opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits::type’ {aka ‘__vector(2) double’} [-Wignored-attributes] +g++: fatal error: Killed signal terminated program cc1plus +compilation terminated. +make: *** [/opt/R/4.1.1/lib/R/etc/Makeconf:175: stanExports_dfa.o] Error 1 +ERROR: compilation failed for package ‘bayesdfa’ +* removing ‘/tmp/workdir/bayesdfa/new/bayesdfa.Rcheck/bayesdfa’ ``` ### CRAN ``` +* installing *source* package ‘bayesdfa’ ... +** package ‘bayesdfa’ successfully unpacked and MD5 sums checked +** using staged installation +** libs - - +g++ -std=gnu++17 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I"../inst/include" -I"/opt/R/4.1.1/lib/R/site-library/StanHeaders/include/src" -DBOOST_DISABLE_ASSERTS -DEIGEN_NO_DEBUG -DBOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error -DUSE_STANC3 -D_HAS_AUTO_PTR_ETC=0 -I'/opt/R/4.1.1/lib/R/site-library/BH/include' -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppEigen/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppParallel/include' -I'/opt/R/4.1.1/lib/R/site-library/rstan/include' -I'/opt/R/4.1.1/lib/R/site-library/StanHeaders/include' -I/usr/local/include -I'/opt/R/4.1.1/lib/R/site-library/RcppParallel/include' -D_REENTRANT -DSTAN_THREADS -fpic -g -O2 -c RcppExports.cpp -o RcppExports.o +In file included from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/Core:397, + from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/Dense:1, + from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30, +... +/opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/src/Core/ProductEvaluators.h:35:90: required from ‘Eigen::internal::evaluator >::evaluator(const XprType&) [with Lhs = Eigen::Product, const Eigen::CwiseNullaryOp, const Eigen::Matrix >, const Eigen::Transpose > >, Eigen::Matrix, 0>; Rhs = Eigen::Matrix; int Options = 0; Eigen::internal::evaluator >::XprType = Eigen::Product, const Eigen::CwiseNullaryOp, const Eigen::Matrix >, const Eigen::Transpose > >, Eigen::Matrix, 0>, Eigen::Matrix, 0>]’ +/opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Product.h:132:22: required from ‘Eigen::internal::dense_product_base::operator const Scalar() const [with Lhs = Eigen::Product, const Eigen::CwiseNullaryOp, const Eigen::Matrix >, const Eigen::Transpose > >, Eigen::Matrix, 0>; Rhs = Eigen::Matrix; int Option = 0; Eigen::internal::dense_product_base::Scalar = double]’ +/opt/R/4.1.1/lib/R/site-library/StanHeaders/include/src/stan/mcmc/hmc/hamiltonians/dense_e_metric.hpp:22:56: required from ‘double stan::mcmc::dense_e_metric::T(stan::mcmc::dense_e_point&) [with Model = model_dfa_namespace::model_dfa; BaseRNG = boost::random::additive_combine_engine, boost::random::linear_congruential_engine >]’ +/opt/R/4.1.1/lib/R/site-library/StanHeaders/include/src/stan/mcmc/hmc/hamiltonians/dense_e_metric.hpp:21:10: required from here +/opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits::type’ {aka ‘__vector(2) double’} [-Wignored-attributes] +g++: fatal error: Killed signal terminated program cc1plus +compilation terminated. +make: *** [/opt/R/4.1.1/lib/R/etc/Makeconf:175: stanExports_dfa.o] Error 1 +ERROR: compilation failed for package ‘bayesdfa’ +* removing ‘/tmp/workdir/bayesdfa/old/bayesdfa.Rcheck/bayesdfa’ ``` @@ -379,26 +350,26 @@ Run `cloud_details(, "NA")` for more info ``` -# ctsem +# BrailleR
-* Version: 3.7.6 -* GitHub: https://github.com/cdriveraus/ctsem -* Source code: https://github.com/cran/ctsem -* Date/Publication: 2023-03-26 17:10:02 UTC -* Number of recursive dependencies: 137 +* Version: 1.0.2 +* GitHub: https://github.com/ajrgodfrey/BrailleR +* Source code: https://github.com/cran/BrailleR +* Date/Publication: 2023-07-10 19:10:12 UTC +* Number of recursive dependencies: 196 -Run `cloud_details(, "ctsem")` for more info +Run `cloud_details(, "BrailleR")` for more info
## In both -* checking whether package ‘ctsem’ can be installed ... ERROR +* checking whether package ‘BrailleR’ can be installed ... ERROR ``` Installation failed. - See ‘/tmp/workdir/ctsem/new/ctsem.Rcheck/00install.out’ for details. + See ‘/tmp/workdir/BrailleR/new/BrailleR.Rcheck/00install.out’ for details. ``` ## Installation @@ -406,54 +377,34 @@ Run `cloud_details(, "ctsem")` for more info ### Devel ``` -* installing *source* package ‘ctsem’ ... -** package ‘ctsem’ successfully unpacked and MD5 sums checked +* installing *source* package ‘BrailleR’ ... +** package ‘BrailleR’ successfully unpacked and MD5 sums checked ** using staged installation -DIAGNOSTIC(S) FROM PARSER: -Info: integer division implicitly rounds to integer. Found int division: d * d - d / 2 - Positive values rounded down, negative values rounded up or down in platform-dependent way. -Info: integer division implicitly rounds to integer. Found int division: d * d - d / 2 - Positive values rounded down, negative values rounded up or down in platform-dependent way. - -DIAGNOSTIC(S) FROM PARSER: -... -In file included from stanExports_ctsm.cc:5: -stanExports_ctsm.h: In member function ‘T__ model_ctsm_namespace::model_ctsm::log_prob(std::vector&, std::vector&, std::ostream*) const [with bool propto__ = false; bool jacobian__ = true; T__ = double]’: -stanExports_ctsm.h:2091:9: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without - 2091 | T__ log_prob(std::vector& params_r__, - | ^~~~~~~~ -g++: fatal error: Killed signal terminated program cc1plus -compilation terminated. -make: *** [/opt/R/4.1.1/lib/R/etc/Makeconf:175: stanExports_ctsm.o] Error 1 -ERROR: compilation failed for package ‘ctsem’ -* removing ‘/tmp/workdir/ctsem/new/ctsem.Rcheck/ctsem’ +** R +Error in parse(outFile) : + /tmp/workdir/BrailleR/new/BrailleR.Rcheck/00_pkg_src/BrailleR/R/AddXMLInternal.R:398:48: unexpected input +397: group_split() |> +398: Filter(function(x) nrow(x) >= 2, x = _ + ^ +ERROR: unable to collate and parse R files for package ‘BrailleR’ +* removing ‘/tmp/workdir/BrailleR/new/BrailleR.Rcheck/BrailleR’ ``` ### CRAN ``` -* installing *source* package ‘ctsem’ ... -** package ‘ctsem’ successfully unpacked and MD5 sums checked +* installing *source* package ‘BrailleR’ ... +** package ‘BrailleR’ successfully unpacked and MD5 sums checked ** using staged installation -DIAGNOSTIC(S) FROM PARSER: -Info: integer division implicitly rounds to integer. Found int division: d * d - d / 2 - Positive values rounded down, negative values rounded up or down in platform-dependent way. -Info: integer division implicitly rounds to integer. Found int division: d * d - d / 2 - Positive values rounded down, negative values rounded up or down in platform-dependent way. - -DIAGNOSTIC(S) FROM PARSER: -... -In file included from stanExports_ctsm.cc:5: -stanExports_ctsm.h: In member function ‘T__ model_ctsm_namespace::model_ctsm::log_prob(std::vector&, std::vector&, std::ostream*) const [with bool propto__ = false; bool jacobian__ = true; T__ = double]’: -stanExports_ctsm.h:2091:9: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without - 2091 | T__ log_prob(std::vector& params_r__, - | ^~~~~~~~ -g++: fatal error: Killed signal terminated program cc1plus -compilation terminated. -make: *** [/opt/R/4.1.1/lib/R/etc/Makeconf:175: stanExports_ctsm.o] Error 1 -ERROR: compilation failed for package ‘ctsem’ -* removing ‘/tmp/workdir/ctsem/old/ctsem.Rcheck/ctsem’ +** R +Error in parse(outFile) : + /tmp/workdir/BrailleR/old/BrailleR.Rcheck/00_pkg_src/BrailleR/R/AddXMLInternal.R:398:48: unexpected input +397: group_split() |> +398: Filter(function(x) nrow(x) >= 2, x = _ + ^ +ERROR: unable to collate and parse R files for package ‘BrailleR’ +* removing ‘/tmp/workdir/BrailleR/old/BrailleR.Rcheck/BrailleR’ ``` @@ -492,16 +443,17 @@ Run `cloud_details(, "NA")` for more info ``` -# NA +# CausalImpact
-* Version: NA +* Version: 1.3.0 * GitHub: NA -* Source code: https://github.com/cran/NA -* Number of recursive dependencies: 0 +* Source code: https://github.com/cran/CausalImpact +* Date/Publication: 2022-11-09 08:40:40 UTC +* Number of recursive dependencies: 81 -Run `cloud_details(, "NA")` for more info +Run `cloud_details(, "CausalImpact")` for more info
@@ -510,7 +462,21 @@ Run `cloud_details(, "NA")` for more info ### Devel ``` +* using log directory ‘/tmp/workdir/CausalImpact/new/CausalImpact.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘CausalImpact/DESCRIPTION’ ... OK +* this is package ‘CausalImpact’ version ‘1.3.0’ +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'bsts', 'Boom' +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR @@ -520,23 +486,38 @@ Run `cloud_details(, "NA")` for more info ### CRAN ``` +* using log directory ‘/tmp/workdir/CausalImpact/old/CausalImpact.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘CausalImpact/DESCRIPTION’ ... OK +* this is package ‘CausalImpact’ version ‘1.3.0’ +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'bsts', 'Boom' +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR ``` -# NA +# CensMFM
-* Version: NA +* Version: 3.0 * GitHub: NA -* Source code: https://github.com/cran/NA -* Number of recursive dependencies: 0 +* Source code: https://github.com/cran/CensMFM +* Date/Publication: 2023-01-30 14:00:10 UTC +* Number of recursive dependencies: 41 -Run `cloud_details(, "NA")` for more info +Run `cloud_details(, "CensMFM")` for more info
@@ -545,7 +526,23 @@ Run `cloud_details(, "NA")` for more info ### Devel ``` +* using log directory ‘/tmp/workdir/CensMFM/new/CensMFM.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘CensMFM/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘CensMFM’ version ‘3.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'MomTrunc', 'tlrmvnmvt' +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR @@ -555,23 +552,40 @@ Run `cloud_details(, "NA")` for more info ### CRAN ``` +* using log directory ‘/tmp/workdir/CensMFM/old/CensMFM.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘CensMFM/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘CensMFM’ version ‘3.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'MomTrunc', 'tlrmvnmvt' +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR ``` -# NA +# cinaR
-* Version: NA -* GitHub: NA -* Source code: https://github.com/cran/NA -* Number of recursive dependencies: 0 +* Version: 0.2.3 +* GitHub: https://github.com/eonurk/cinaR +* Source code: https://github.com/cran/cinaR +* Date/Publication: 2022-05-18 14:00:09 UTC +* Number of recursive dependencies: 179 -Run `cloud_details(, "NA")` for more info +Run `cloud_details(, "cinaR")` for more info
@@ -580,7 +594,23 @@ Run `cloud_details(, "NA")` for more info ### Devel ``` +* using log directory ‘/tmp/workdir/cinaR/new/cinaR.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘cinaR/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘cinaR’ version ‘0.2.3’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘ChIPseeker’ +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR @@ -590,7 +620,23 @@ Run `cloud_details(, "NA")` for more info ### CRAN ``` +* using log directory ‘/tmp/workdir/cinaR/old/cinaR.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘cinaR/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘cinaR’ version ‘0.2.3’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘ChIPseeker’ +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR @@ -772,17 +818,16 @@ Run `cloud_details(, "NA")` for more info ``` -# genekitr +# NA
-* Version: 1.1.5 -* GitHub: https://github.com/GangLiLab/genekitr -* Source code: https://github.com/cran/genekitr -* Date/Publication: 2023-03-23 12:22:08 UTC -* Number of recursive dependencies: 206 +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "genekitr")` for more info +Run `cloud_details(, "NA")` for more info
@@ -791,23 +836,7 @@ Run `cloud_details(, "genekitr")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/genekitr/new/genekitr.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘genekitr/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘genekitr’ version ‘1.1.5’ -* package encoding: UTF-8 -* checking package namespace information ... OK -* checking package dependencies ... ERROR -Package required but not available: ‘clusterProfiler’ -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR @@ -817,89 +846,45 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/genekitr/old/genekitr.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘genekitr/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘genekitr’ version ‘1.1.5’ -* package encoding: UTF-8 -* checking package namespace information ... OK -* checking package dependencies ... ERROR -Package required but not available: ‘clusterProfiler’ -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR ``` -# ggh4x +# NA
-* Version: 0.2.3 -* GitHub: https://github.com/teunbrand/ggh4x -* Source code: https://github.com/cran/ggh4x -* Date/Publication: 2022-11-09 08:40:24 UTC -* Number of recursive dependencies: 79 +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "ggh4x")` for more info +Run `cloud_details(, "NA")` for more info
-## Newly broken - -* checking whether package ‘ggh4x’ can be installed ... ERROR - ``` - Installation failed. - See ‘/tmp/workdir/ggh4x/new/ggh4x.Rcheck/00install.out’ for details. - ``` - -## Installation +## Error before installation ### Devel ``` -* installing *source* package ‘ggh4x’ ... -** package ‘ggh4x’ successfully unpacked and MD5 sums checked -** using staged installation -** R -** inst -** byte-compile and prepare package for lazy loading -Error in get(x, envir = ns, inherits = FALSE) : - object 'continuous_range' not found -Error: unable to load R code in package ‘ggh4x’ -Execution halted -ERROR: lazy loading failed for package ‘ggh4x’ -* removing ‘/tmp/workdir/ggh4x/new/ggh4x.Rcheck/ggh4x’ + + + + ``` ### CRAN ``` -* installing *source* package ‘ggh4x’ ... -** package ‘ggh4x’ successfully unpacked and MD5 sums checked -** using staged installation -** R -** inst -** byte-compile and prepare package for lazy loading -** help -*** installing help indices -*** copying figures -** building package indices -** installing vignettes -** testing if installed package can be loaded from temporary location -** testing if installed package can be loaded from final location -** testing if installed package keeps a record of temporary installation path -* DONE (ggh4x) + + + + ``` @@ -938,69 +923,51 @@ Run `cloud_details(, "NA")` for more info ``` -# glmmPen +# NA
-* Version: 1.5.3.0 +* Version: NA * GitHub: NA -* Source code: https://github.com/cran/glmmPen -* Date/Publication: 2023-03-15 14:50:07 UTC -* Number of recursive dependencies: 94 +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "glmmPen")` for more info +Run `cloud_details(, "NA")` for more info
-## In both - -* checking whether package ‘glmmPen’ can be installed ... ERROR - ``` - Installation failed. - See ‘/tmp/workdir/glmmPen/new/glmmPen.Rcheck/00install.out’ for details. - ``` - -## Installation +## Error before installation ### Devel ``` -* installing *source* package ‘glmmPen’ ... -** package ‘glmmPen’ successfully unpacked and MD5 sums checked -** using staged installation -Error in loadNamespace(x) : there is no package called ‘rstantools’ -Calls: loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart -Execution halted -ERROR: configuration failed for package ‘glmmPen’ -* removing ‘/tmp/workdir/glmmPen/new/glmmPen.Rcheck/glmmPen’ + + + + ``` ### CRAN ``` -* installing *source* package ‘glmmPen’ ... -** package ‘glmmPen’ successfully unpacked and MD5 sums checked -** using staged installation -Error in loadNamespace(x) : there is no package called ‘rstantools’ -Calls: loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart -Execution halted -ERROR: configuration failed for package ‘glmmPen’ -* removing ‘/tmp/workdir/glmmPen/old/glmmPen.Rcheck/glmmPen’ + + + + ``` -# grandR +# NA
-* Version: 0.2.1 -* GitHub: https://github.com/erhard-lab/grandR -* Source code: https://github.com/cran/grandR -* Date/Publication: 2023-02-27 09:32:39 UTC -* Number of recursive dependencies: 260 +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "grandR")` for more info +Run `cloud_details(, "NA")` for more info
@@ -1009,27 +976,7 @@ Run `cloud_details(, "grandR")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/grandR/new/grandR.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘grandR/DESCRIPTION’ ... OK -* this is package ‘grandR’ version ‘0.2.1’ -* package encoding: UTF-8 -* checking package namespace information ... OK -* checking package dependencies ... NOTE -... -* checking installed files from ‘inst/doc’ ... OK -* checking files in ‘vignettes’ ... OK -* checking examples ... OK -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘getting-started.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK -* DONE -Status: 2 NOTEs + @@ -1039,96 +986,88 @@ Status: 2 NOTEs ### CRAN ``` -* using log directory ‘/tmp/workdir/grandR/old/grandR.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘grandR/DESCRIPTION’ ... OK -* this is package ‘grandR’ version ‘0.2.1’ -* package encoding: UTF-8 -* checking package namespace information ... OK -* checking package dependencies ... NOTE -... -* checking installed files from ‘inst/doc’ ... OK -* checking files in ‘vignettes’ ... OK -* checking examples ... OK -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘getting-started.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK -* DONE -Status: 2 NOTEs + ``` -# immcp +# fdacluster
-* Version: 1.0.3 -* GitHub: https://github.com/YuanlongHu/immcp -* Source code: https://github.com/cran/immcp -* Date/Publication: 2022-05-12 05:50:02 UTC -* Number of recursive dependencies: 195 +* Version: 0.3.0 +* GitHub: https://github.com/astamm/fdacluster +* Source code: https://github.com/cran/fdacluster +* Date/Publication: 2023-07-04 15:53:04 UTC +* Number of recursive dependencies: 121 -Run `cloud_details(, "immcp")` for more info +Run `cloud_details(, "fdacluster")` for more info
-## Error before installation +## In both + +* checking whether package ‘fdacluster’ can be installed ... ERROR + ``` + Installation failed. + See ‘/tmp/workdir/fdacluster/new/fdacluster.Rcheck/00install.out’ for details. + ``` + +## Installation ### Devel ``` -* using log directory ‘/tmp/workdir/immcp/new/immcp.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘immcp/DESCRIPTION’ ... OK -* this is package ‘immcp’ version ‘1.0.3’ -* package encoding: UTF-8 -* checking package namespace information ... OK -* checking package dependencies ... ERROR -Package required but not available: ‘clusterProfiler’ - -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR - - - +* installing *source* package ‘fdacluster’ ... +** package ‘fdacluster’ successfully unpacked and MD5 sums checked +** using staged installation +** libs +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c RcppExports.cpp -o RcppExports.o +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c affineWarpingClass.cpp -o affineWarpingClass.o +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c baseDissimilarityClass.cpp -o baseDissimilarityClass.o +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c baseOptimizerClass.cpp -o baseOptimizerClass.o +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c baseWarpingClass.cpp -o baseWarpingClass.o +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c bobyqaOptimizerClass.cpp -o bobyqaOptimizerClass.o +... +g++ -std=gnu++14 -shared -L/opt/R/4.1.1/lib/R/lib -L/usr/local/lib -o fdacluster.so RcppExports.o affineWarpingClass.o baseDissimilarityClass.o baseOptimizerClass.o baseWarpingClass.o bobyqaOptimizerClass.o dilationWarpingClass.o kmaModelClass.o kmap.o kumaraswamyWarpingClass.o l2DissimilarityClass.o lowessCenterClass.o meanCenterClass.o medianCenterClass.o medoidCenterClass.o noWarpingClass.o pearsonDissimilarityClass.o polyCenterClass.o shiftWarpingClass.o utilityFunctions.o -fopenmp -llapack -lblas -lgfortran -lm -lquadmath -L/opt/R/4.1.1/lib/R/lib -lR +installing to /tmp/workdir/fdacluster/new/fdacluster.Rcheck/00LOCK-fdacluster/00new/fdacluster/libs +** R +Error in parse(outFile) : + /tmp/workdir/fdacluster/new/fdacluster.Rcheck/00_pkg_src/fdacluster/R/utils.R:132:31: unexpected input +131: purrr::imap(\(values, id) stats::approx(x@argvals[[id]], values, n = M)$y) |> +132: do.call(rbind, args = _ + ^ +ERROR: unable to collate and parse R files for package ‘fdacluster’ +* removing ‘/tmp/workdir/fdacluster/new/fdacluster.Rcheck/fdacluster’ ``` ### CRAN ``` -* using log directory ‘/tmp/workdir/immcp/old/immcp.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘immcp/DESCRIPTION’ ... OK -* this is package ‘immcp’ version ‘1.0.3’ -* package encoding: UTF-8 -* checking package namespace information ... OK -* checking package dependencies ... ERROR -Package required but not available: ‘clusterProfiler’ - -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR - - - +* installing *source* package ‘fdacluster’ ... +** package ‘fdacluster’ successfully unpacked and MD5 sums checked +** using staged installation +** libs +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c RcppExports.cpp -o RcppExports.o +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c affineWarpingClass.cpp -o affineWarpingClass.o +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c baseDissimilarityClass.cpp -o baseDissimilarityClass.o +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c baseOptimizerClass.cpp -o baseOptimizerClass.o +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c baseWarpingClass.cpp -o baseWarpingClass.o +g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I../inst/include -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/nloptr/include' -I/usr/local/include -fopenmp -fpic -g -O2 -c bobyqaOptimizerClass.cpp -o bobyqaOptimizerClass.o +... +g++ -std=gnu++14 -shared -L/opt/R/4.1.1/lib/R/lib -L/usr/local/lib -o fdacluster.so RcppExports.o affineWarpingClass.o baseDissimilarityClass.o baseOptimizerClass.o baseWarpingClass.o bobyqaOptimizerClass.o dilationWarpingClass.o kmaModelClass.o kmap.o kumaraswamyWarpingClass.o l2DissimilarityClass.o lowessCenterClass.o meanCenterClass.o medianCenterClass.o medoidCenterClass.o noWarpingClass.o pearsonDissimilarityClass.o polyCenterClass.o shiftWarpingClass.o utilityFunctions.o -fopenmp -llapack -lblas -lgfortran -lm -lquadmath -L/opt/R/4.1.1/lib/R/lib -lR +installing to /tmp/workdir/fdacluster/old/fdacluster.Rcheck/00LOCK-fdacluster/00new/fdacluster/libs +** R +Error in parse(outFile) : + /tmp/workdir/fdacluster/old/fdacluster.Rcheck/00_pkg_src/fdacluster/R/utils.R:132:31: unexpected input +131: purrr::imap(\(values, id) stats::approx(x@argvals[[id]], values, n = M)$y) |> +132: do.call(rbind, args = _ + ^ +ERROR: unable to collate and parse R files for package ‘fdacluster’ +* removing ‘/tmp/workdir/fdacluster/old/fdacluster.Rcheck/fdacluster’ ``` @@ -1237,17 +1176,17 @@ Run `cloud_details(, "NA")` for more info ``` -# loon.ggplot +# genekitr
-* Version: 1.3.3 -* GitHub: https://github.com/great-northern-diver/loon.ggplot -* Source code: https://github.com/cran/loon.ggplot -* Date/Publication: 2022-11-12 22:30:02 UTC -* Number of recursive dependencies: 105 +* Version: 1.2.5 +* GitHub: https://github.com/GangLiLab/genekitr +* Source code: https://github.com/cran/genekitr +* Date/Publication: 2023-09-07 08:50:09 UTC +* Number of recursive dependencies: 211 -Run `cloud_details(, "loon.ggplot")` for more info +Run `cloud_details(, "genekitr")` for more info
@@ -1256,20 +1195,18 @@ Run `cloud_details(, "loon.ggplot")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/loon.ggplot/new/loon.ggplot.Rcheck’ +* using log directory ‘/tmp/workdir/genekitr/new/genekitr.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘loon.ggplot/DESCRIPTION’ ... OK +* checking for file ‘genekitr/DESCRIPTION’ ... OK * checking extension type ... Package -* this is package ‘loon.ggplot’ version ‘1.3.3’ +* this is package ‘genekitr’ version ‘1.2.5’ * package encoding: UTF-8 * checking package namespace information ... OK * checking package dependencies ... ERROR -Package required but not available: ‘loon’ - -Package suggested but not available for checking: ‘zenplots’ +Package required but not available: ‘clusterProfiler’ See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ manual. @@ -1284,20 +1221,18 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/loon.ggplot/old/loon.ggplot.Rcheck’ +* using log directory ‘/tmp/workdir/genekitr/old/genekitr.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘loon.ggplot/DESCRIPTION’ ... OK +* checking for file ‘genekitr/DESCRIPTION’ ... OK * checking extension type ... Package -* this is package ‘loon.ggplot’ version ‘1.3.3’ +* this is package ‘genekitr’ version ‘1.2.5’ * package encoding: UTF-8 * checking package namespace information ... OK * checking package dependencies ... ERROR -Package required but not available: ‘loon’ - -Package suggested but not available for checking: ‘zenplots’ +Package required but not available: ‘clusterProfiler’ See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ manual. @@ -1309,17 +1244,16 @@ Status: 1 ERROR ``` -# MACP +# NA
-* Version: 0.1.0 -* GitHub: https://github.com/mrbakhsh/MACP -* Source code: https://github.com/cran/MACP -* Date/Publication: 2023-02-28 17:32:30 UTC -* Number of recursive dependencies: 232 +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "MACP")` for more info +Run `cloud_details(, "NA")` for more info
@@ -1328,27 +1262,63 @@ Run `cloud_details(, "MACP")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/MACP/new/MACP.Rcheck’ + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# ggPMX + +
+ +* Version: 1.2.10 +* GitHub: https://github.com/ggPMXdevelopment/ggPMX +* Source code: https://github.com/cran/ggPMX +* Date/Publication: 2023-06-16 23:20:07 UTC +* Number of recursive dependencies: 177 + +Run `cloud_details(, "ggPMX")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/ggPMX/new/ggPMX.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘MACP/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘MACP’ version ‘0.1.0’ +* checking for file ‘ggPMX/DESCRIPTION’ ... OK +* this is package ‘ggPMX’ version ‘1.2.10’ * package encoding: UTF-8 * checking package namespace information ... OK +* checking package dependencies ... NOTE ... -* checking installed files from ‘inst/doc’ ... OK -* checking files in ‘vignettes’ ... OK -* checking examples ... OK +* checking for unstated dependencies in ‘tests’ ... OK +* checking tests ... OK + Running ‘testthat.R’ * checking for unstated dependencies in vignettes ... OK * checking package vignettes in ‘inst/doc’ ... OK * checking running R code from vignettes ... NONE - ‘MACP_tutorial.Rmd’ using ‘UTF-8’... OK + ‘ggPMX-guide.Rmd’ using ‘UTF-8’... OK * checking re-building of vignette outputs ... OK * DONE -Status: 3 NOTEs +Status: 2 NOTEs @@ -1358,27 +1328,27 @@ Status: 3 NOTEs ### CRAN ``` -* using log directory ‘/tmp/workdir/MACP/old/MACP.Rcheck’ +* using log directory ‘/tmp/workdir/ggPMX/old/ggPMX.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘MACP/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘MACP’ version ‘0.1.0’ +* checking for file ‘ggPMX/DESCRIPTION’ ... OK +* this is package ‘ggPMX’ version ‘1.2.10’ * package encoding: UTF-8 * checking package namespace information ... OK +* checking package dependencies ... NOTE ... -* checking installed files from ‘inst/doc’ ... OK -* checking files in ‘vignettes’ ... OK -* checking examples ... OK +* checking for unstated dependencies in ‘tests’ ... OK +* checking tests ... OK + Running ‘testthat.R’ * checking for unstated dependencies in vignettes ... OK * checking package vignettes in ‘inst/doc’ ... OK * checking running R code from vignettes ... NONE - ‘MACP_tutorial.Rmd’ using ‘UTF-8’... OK + ‘ggPMX-guide.Rmd’ using ‘UTF-8’... OK * checking re-building of vignette outputs ... OK * DONE -Status: 3 NOTEs +Status: 2 NOTEs @@ -1420,17 +1390,17 @@ Run `cloud_details(, "NA")` for more info ``` -# MarketMatching +# grandR
-* Version: 1.2.0 -* GitHub: NA -* Source code: https://github.com/cran/MarketMatching -* Date/Publication: 2021-01-08 20:10:02 UTC -* Number of recursive dependencies: 74 +* Version: 0.2.2 +* GitHub: https://github.com/erhard-lab/grandR +* Source code: https://github.com/cran/grandR +* Date/Publication: 2023-04-20 21:22:30 UTC +* Number of recursive dependencies: 261 -Run `cloud_details(, "MarketMatching")` for more info +Run `cloud_details(, "grandR")` for more info
@@ -1439,22 +1409,27 @@ Run `cloud_details(, "MarketMatching")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/MarketMatching/new/MarketMatching.Rcheck’ +* using log directory ‘/tmp/workdir/grandR/new/grandR.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘MarketMatching/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘MarketMatching’ version ‘1.2.0’ +* checking for file ‘grandR/DESCRIPTION’ ... OK +* this is package ‘grandR’ version ‘0.2.2’ +* package encoding: UTF-8 * checking package namespace information ... OK -* checking package dependencies ... ERROR -Packages required but not available: 'CausalImpact', 'bsts', 'Boom' - -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. +* checking package dependencies ... NOTE +... +* checking installed files from ‘inst/doc’ ... OK +* checking files in ‘vignettes’ ... OK +* checking examples ... OK +* checking for unstated dependencies in vignettes ... OK +* checking package vignettes in ‘inst/doc’ ... OK +* checking running R code from vignettes ... NONE + ‘getting-started.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK * DONE -Status: 1 ERROR +Status: 2 NOTEs @@ -1464,39 +1439,44 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/MarketMatching/old/MarketMatching.Rcheck’ +* using log directory ‘/tmp/workdir/grandR/old/grandR.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘MarketMatching/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘MarketMatching’ version ‘1.2.0’ +* checking for file ‘grandR/DESCRIPTION’ ... OK +* this is package ‘grandR’ version ‘0.2.2’ +* package encoding: UTF-8 * checking package namespace information ... OK -* checking package dependencies ... ERROR -Packages required but not available: 'CausalImpact', 'bsts', 'Boom' - -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. +* checking package dependencies ... NOTE +... +* checking installed files from ‘inst/doc’ ... OK +* checking files in ‘vignettes’ ... OK +* checking examples ... OK +* checking for unstated dependencies in vignettes ... OK +* checking package vignettes in ‘inst/doc’ ... OK +* checking running R code from vignettes ... NONE + ‘getting-started.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK * DONE -Status: 1 ERROR +Status: 2 NOTEs ``` -# MARVEL +# HeckmanEM
-* Version: 1.4.0 +* Version: 0.2-0 * GitHub: NA -* Source code: https://github.com/cran/MARVEL -* Date/Publication: 2022-10-31 10:22:50 UTC -* Number of recursive dependencies: 236 +* Source code: https://github.com/cran/HeckmanEM +* Date/Publication: 2023-06-11 15:00:03 UTC +* Number of recursive dependencies: 95 -Run `cloud_details(, "MARVEL")` for more info +Run `cloud_details(, "HeckmanEM")` for more info
@@ -1505,27 +1485,23 @@ Run `cloud_details(, "MARVEL")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/MARVEL/new/MARVEL.Rcheck’ +* using log directory ‘/tmp/workdir/HeckmanEM/new/HeckmanEM.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘MARVEL/DESCRIPTION’ ... OK -* this is package ‘MARVEL’ version ‘1.4.0’ +* checking for file ‘HeckmanEM/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘HeckmanEM’ version ‘0.2-0’ * package encoding: UTF-8 * checking package namespace information ... OK -* checking package dependencies ... NOTE -... -* checking installed files from ‘inst/doc’ ... OK -* checking files in ‘vignettes’ ... OK -* checking examples ... OK -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘MARVEL.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘MomTrunc’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. * DONE -Status: 1 NOTE +Status: 1 ERROR @@ -1535,43 +1511,40 @@ Status: 1 NOTE ### CRAN ``` -* using log directory ‘/tmp/workdir/MARVEL/old/MARVEL.Rcheck’ +* using log directory ‘/tmp/workdir/HeckmanEM/old/HeckmanEM.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘MARVEL/DESCRIPTION’ ... OK -* this is package ‘MARVEL’ version ‘1.4.0’ +* checking for file ‘HeckmanEM/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘HeckmanEM’ version ‘0.2-0’ * package encoding: UTF-8 * checking package namespace information ... OK -* checking package dependencies ... NOTE -... -* checking installed files from ‘inst/doc’ ... OK -* checking files in ‘vignettes’ ... OK -* checking examples ... OK -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘MARVEL.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘MomTrunc’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. * DONE -Status: 1 NOTE +Status: 1 ERROR ``` -# NA +# immcp
-* Version: NA -* GitHub: NA -* Source code: https://github.com/cran/NA -* Number of recursive dependencies: 0 +* Version: 1.0.3 +* GitHub: https://github.com/YuanlongHu/immcp +* Source code: https://github.com/cran/immcp +* Date/Publication: 2022-05-12 05:50:02 UTC +* Number of recursive dependencies: 198 -Run `cloud_details(, "NA")` for more info +Run `cloud_details(, "immcp")` for more info
@@ -1580,7 +1553,22 @@ Run `cloud_details(, "NA")` for more info ### Devel ``` +* using log directory ‘/tmp/workdir/immcp/new/immcp.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘immcp/DESCRIPTION’ ... OK +* this is package ‘immcp’ version ‘1.0.3’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘clusterProfiler’ +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR @@ -1590,7 +1578,22 @@ Run `cloud_details(, "NA")` for more info ### CRAN ``` +* using log directory ‘/tmp/workdir/immcp/old/immcp.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘immcp/DESCRIPTION’ ... OK +* this is package ‘immcp’ version ‘1.0.3’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘clusterProfiler’ +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR @@ -1702,17 +1705,17 @@ Run `cloud_details(, "NA")` for more info ``` -# nlmixr2rpt +# loon.ggplot
-* Version: 0.1.0 -* GitHub: https://github.com/nlmixr2/nlmixr2rpt -* Source code: https://github.com/cran/nlmixr2rpt -* Date/Publication: 2022-12-05 10:40:02 UTC -* Number of recursive dependencies: 218 +* Version: 1.3.3 +* GitHub: https://github.com/great-northern-diver/loon.ggplot +* Source code: https://github.com/cran/loon.ggplot +* Date/Publication: 2022-11-12 22:30:02 UTC +* Number of recursive dependencies: 106 -Run `cloud_details(, "nlmixr2rpt")` for more info +Run `cloud_details(, "loon.ggplot")` for more info
@@ -1721,20 +1724,20 @@ Run `cloud_details(, "nlmixr2rpt")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/nlmixr2rpt/new/nlmixr2rpt.Rcheck’ +* using log directory ‘/tmp/workdir/loon.ggplot/new/loon.ggplot.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘nlmixr2rpt/DESCRIPTION’ ... OK -* this is package ‘nlmixr2rpt’ version ‘0.1.0’ +* checking for file ‘loon.ggplot/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘loon.ggplot’ version ‘1.3.3’ * package encoding: UTF-8 * checking package namespace information ... OK * checking package dependencies ... ERROR -Packages required but not available: - 'nlmixr2extra', 'rxode2', 'xpose.nlmixr2' +Package required but not available: ‘loon’ -Package suggested but not available for checking: ‘nlmixr2’ +Package suggested but not available for checking: ‘zenplots’ See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ manual. @@ -1749,20 +1752,20 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/nlmixr2rpt/old/nlmixr2rpt.Rcheck’ +* using log directory ‘/tmp/workdir/loon.ggplot/old/loon.ggplot.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘nlmixr2rpt/DESCRIPTION’ ... OK -* this is package ‘nlmixr2rpt’ version ‘0.1.0’ +* checking for file ‘loon.ggplot/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘loon.ggplot’ version ‘1.3.3’ * package encoding: UTF-8 * checking package namespace information ... OK * checking package dependencies ... ERROR -Packages required but not available: - 'nlmixr2extra', 'rxode2', 'xpose.nlmixr2' +Package required but not available: ‘loon’ -Package suggested but not available for checking: ‘nlmixr2’ +Package suggested but not available for checking: ‘zenplots’ See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ manual. @@ -1774,17 +1777,17 @@ Status: 1 ERROR ``` -# numbat +# MACP
-* Version: 1.2.2 -* GitHub: https://github.com/kharchenkolab/numbat -* Source code: https://github.com/cran/numbat -* Date/Publication: 2023-02-14 18:20:02 UTC -* Number of recursive dependencies: 132 +* Version: 0.1.0 +* GitHub: https://github.com/mrbakhsh/MACP +* Source code: https://github.com/cran/MACP +* Date/Publication: 2023-02-28 17:32:30 UTC +* Number of recursive dependencies: 235 -Run `cloud_details(, "numbat")` for more info +Run `cloud_details(, "MACP")` for more info
@@ -1793,22 +1796,27 @@ Run `cloud_details(, "numbat")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/numbat/new/numbat.Rcheck’ +* using log directory ‘/tmp/workdir/MACP/new/MACP.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘numbat/DESCRIPTION’ ... OK -* this is package ‘numbat’ version ‘1.2.2’ +* checking for file ‘MACP/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘MACP’ version ‘0.1.0’ * package encoding: UTF-8 * checking package namespace information ... OK -* checking package dependencies ... ERROR -Packages required but not available: 'ggtree', 'scistreer' - -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. +... +* checking installed files from ‘inst/doc’ ... OK +* checking files in ‘vignettes’ ... OK +* checking examples ... OK +* checking for unstated dependencies in vignettes ... OK +* checking package vignettes in ‘inst/doc’ ... OK +* checking running R code from vignettes ... NONE + ‘MACP_tutorial.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK * DONE -Status: 1 ERROR +Status: 3 NOTEs @@ -1818,22 +1826,27 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/numbat/old/numbat.Rcheck’ +* using log directory ‘/tmp/workdir/MACP/old/MACP.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘numbat/DESCRIPTION’ ... OK -* this is package ‘numbat’ version ‘1.2.2’ +* checking for file ‘MACP/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘MACP’ version ‘0.1.0’ * package encoding: UTF-8 * checking package namespace information ... OK -* checking package dependencies ... ERROR -Packages required but not available: 'ggtree', 'scistreer' - -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. +... +* checking installed files from ‘inst/doc’ ... OK +* checking files in ‘vignettes’ ... OK +* checking examples ... OK +* checking for unstated dependencies in vignettes ... OK +* checking package vignettes in ‘inst/doc’ ... OK +* checking running R code from vignettes ... NONE + ‘MACP_tutorial.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK * DONE -Status: 1 ERROR +Status: 3 NOTEs @@ -1875,17 +1888,17 @@ Run `cloud_details(, "NA")` for more info ``` -# OlinkAnalyze +# MarketMatching
-* Version: 3.3.1 +* Version: 1.2.0 * GitHub: NA -* Source code: https://github.com/cran/OlinkAnalyze -* Date/Publication: 2023-02-27 20:22:30 UTC -* Number of recursive dependencies: 203 +* Source code: https://github.com/cran/MarketMatching +* Date/Publication: 2021-01-08 20:10:02 UTC +* Number of recursive dependencies: 74 -Run `cloud_details(, "OlinkAnalyze")` for more info +Run `cloud_details(, "MarketMatching")` for more info
@@ -1894,27 +1907,22 @@ Run `cloud_details(, "OlinkAnalyze")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/OlinkAnalyze/new/OlinkAnalyze.Rcheck’ +* using log directory ‘/tmp/workdir/MarketMatching/new/MarketMatching.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘OlinkAnalyze/DESCRIPTION’ ... OK +* checking for file ‘MarketMatching/DESCRIPTION’ ... OK * checking extension type ... Package -* this is package ‘OlinkAnalyze’ version ‘3.3.1’ -* package encoding: UTF-8 +* this is package ‘MarketMatching’ version ‘1.2.0’ * checking package namespace information ... OK -... -* checking for unstated dependencies in ‘tests’ ... OK -* checking tests ... OK - Running ‘testthat.R’ -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘Vignett.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'CausalImpact', 'bsts', 'Boom' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. * DONE -Status: 1 NOTE +Status: 1 ERROR @@ -1924,44 +1932,39 @@ Status: 1 NOTE ### CRAN ``` -* using log directory ‘/tmp/workdir/OlinkAnalyze/old/OlinkAnalyze.Rcheck’ +* using log directory ‘/tmp/workdir/MarketMatching/old/MarketMatching.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘OlinkAnalyze/DESCRIPTION’ ... OK +* checking for file ‘MarketMatching/DESCRIPTION’ ... OK * checking extension type ... Package -* this is package ‘OlinkAnalyze’ version ‘3.3.1’ -* package encoding: UTF-8 +* this is package ‘MarketMatching’ version ‘1.2.0’ * checking package namespace information ... OK -... -* checking for unstated dependencies in ‘tests’ ... OK -* checking tests ... OK - Running ‘testthat.R’ -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘Vignett.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'CausalImpact', 'bsts', 'Boom' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. * DONE -Status: 1 NOTE +Status: 1 ERROR ``` -# OpenMx +# MARVEL
-* Version: 2.21.1 -* GitHub: https://github.com/OpenMx/OpenMx -* Source code: https://github.com/cran/OpenMx -* Date/Publication: 2023-01-19 23:50:02 UTC -* Number of recursive dependencies: 147 +* Version: 1.4.0 +* GitHub: NA +* Source code: https://github.com/cran/MARVEL +* Date/Publication: 2022-10-31 10:22:50 UTC +* Number of recursive dependencies: 238 -Run `cloud_details(, "OpenMx")` for more info +Run `cloud_details(, "MARVEL")` for more info
@@ -1970,27 +1973,27 @@ Run `cloud_details(, "OpenMx")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/OpenMx/new/OpenMx.Rcheck’ +* using log directory ‘/tmp/workdir/MARVEL/new/MARVEL.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘OpenMx/DESCRIPTION’ ... OK -* this is package ‘OpenMx’ version ‘2.21.1’ +* checking for file ‘MARVEL/DESCRIPTION’ ... OK +* this is package ‘MARVEL’ version ‘1.4.0’ * package encoding: UTF-8 * checking package namespace information ... OK * checking package dependencies ... NOTE ... +* checking installed files from ‘inst/doc’ ... OK +* checking files in ‘vignettes’ ... OK +* checking examples ... OK * checking for unstated dependencies in vignettes ... OK * checking package vignettes in ‘inst/doc’ ... OK * checking running R code from vignettes ... NONE - ‘deriv.Rmd’ using ‘UTF-8’... OK - ‘reg_mimic.Rmd’ using ‘UTF-8’... OK - ‘factor_analysis.Rmd’ using ‘UTF-8’... OK - ‘regularization.Rmd’ using ‘UTF-8’... OK + ‘MARVEL.Rmd’ using ‘UTF-8’... OK * checking re-building of vignette outputs ... OK * DONE -Status: 4 NOTEs +Status: 2 NOTEs @@ -2000,44 +2003,43 @@ Status: 4 NOTEs ### CRAN ``` -* using log directory ‘/tmp/workdir/OpenMx/old/OpenMx.Rcheck’ +* using log directory ‘/tmp/workdir/MARVEL/old/MARVEL.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘OpenMx/DESCRIPTION’ ... OK -* this is package ‘OpenMx’ version ‘2.21.1’ +* checking for file ‘MARVEL/DESCRIPTION’ ... OK +* this is package ‘MARVEL’ version ‘1.4.0’ * package encoding: UTF-8 * checking package namespace information ... OK * checking package dependencies ... NOTE ... +* checking installed files from ‘inst/doc’ ... OK +* checking files in ‘vignettes’ ... OK +* checking examples ... OK * checking for unstated dependencies in vignettes ... OK * checking package vignettes in ‘inst/doc’ ... OK * checking running R code from vignettes ... NONE - ‘deriv.Rmd’ using ‘UTF-8’... OK - ‘reg_mimic.Rmd’ using ‘UTF-8’... OK - ‘factor_analysis.Rmd’ using ‘UTF-8’... OK - ‘regularization.Rmd’ using ‘UTF-8’... OK + ‘MARVEL.Rmd’ using ‘UTF-8’... OK * checking re-building of vignette outputs ... OK * DONE -Status: 4 NOTEs +Status: 2 NOTEs ``` -# Platypus +# NA
-* Version: 3.4.1 +* Version: NA * GitHub: NA -* Source code: https://github.com/cran/Platypus -* Date/Publication: 2022-08-15 07:20:20 UTC -* Number of recursive dependencies: 356 +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "Platypus")` for more info +Run `cloud_details(, "NA")` for more info
@@ -2046,27 +2048,7 @@ Run `cloud_details(, "Platypus")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/Platypus/new/Platypus.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘Platypus/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘Platypus’ version ‘3.4.1’ -* package encoding: UTF-8 -* checking package namespace information ... OK -... -* checking package dependencies ... ERROR -Package required but not available: ‘ggtree’ - -Packages suggested but not available for checking: - 'Matrix.utils', 'monocle3', 'ProjecTILs', 'SeuratWrappers' -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR @@ -2076,44 +2058,23 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/Platypus/old/Platypus.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘Platypus/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘Platypus’ version ‘3.4.1’ -* package encoding: UTF-8 -* checking package namespace information ... OK -... -* checking package dependencies ... ERROR -Package required but not available: ‘ggtree’ - -Packages suggested but not available for checking: - 'Matrix.utils', 'monocle3', 'ProjecTILs', 'SeuratWrappers' -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR ``` -# PsychWordVec +# NA
-* Version: 0.3.2 -* GitHub: https://github.com/psychbruce/PsychWordVec -* Source code: https://github.com/cran/PsychWordVec -* Date/Publication: 2023-03-04 16:20:02 UTC -* Number of recursive dependencies: 229 +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "PsychWordVec")` for more info +Run `cloud_details(, "NA")` for more info
@@ -2122,22 +2083,1682 @@ Run `cloud_details(, "PsychWordVec")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/PsychWordVec/new/PsychWordVec.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# MSclassifR + +
+ +* Version: 0.3.3 +* GitHub: https://github.com/agodmer/MSclassifR_examples +* Source code: https://github.com/cran/MSclassifR +* Date/Publication: 2023-08-09 09:00:06 UTC +* Number of recursive dependencies: 230 + +Run `cloud_details(, "MSclassifR")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/MSclassifR/new/MSclassifR.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘MSclassifR/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘MSclassifR’ version ‘0.3.3’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'MALDIquantForeign', 'VSURF' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/MSclassifR/old/MSclassifR.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘MSclassifR/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘MSclassifR’ version ‘0.3.3’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'MALDIquantForeign', 'VSURF' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +# nlmixr2 + +
+ +* Version: 2.0.9 +* GitHub: https://github.com/nlmixr2/nlmixr2 +* Source code: https://github.com/cran/nlmixr2 +* Date/Publication: 2023-02-21 04:00:02 UTC +* Number of recursive dependencies: 194 + +Run `cloud_details(, "nlmixr2")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/nlmixr2/new/nlmixr2.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘nlmixr2/DESCRIPTION’ ... OK +* this is package ‘nlmixr2’ version ‘2.0.9’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: + 'nlmixr2est', 'nlmixr2extra', 'nlmixr2plot' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/nlmixr2/old/nlmixr2.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘nlmixr2/DESCRIPTION’ ... OK +* this is package ‘nlmixr2’ version ‘2.0.9’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: + 'nlmixr2est', 'nlmixr2extra', 'nlmixr2plot' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +# nlmixr2extra + +
+ +* Version: 2.0.8 +* GitHub: https://github.com/nlmixr2/nlmixr2extra +* Source code: https://github.com/cran/nlmixr2extra +* Date/Publication: 2022-10-22 22:32:34 UTC +* Number of recursive dependencies: 186 + +Run `cloud_details(, "nlmixr2extra")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/nlmixr2extra/new/nlmixr2extra.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘nlmixr2extra/DESCRIPTION’ ... OK +* this is package ‘nlmixr2extra’ version ‘2.0.8’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'nlmixr2est', 'symengine' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/nlmixr2extra/old/nlmixr2extra.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘nlmixr2extra/DESCRIPTION’ ... OK +* this is package ‘nlmixr2extra’ version ‘2.0.8’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'nlmixr2est', 'symengine' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +# nlmixr2plot + +
+ +* Version: 2.0.7 +* GitHub: https://github.com/nlmixr2/nlmixr2plot +* Source code: https://github.com/cran/nlmixr2plot +* Date/Publication: 2022-10-20 03:12:36 UTC +* Number of recursive dependencies: 162 + +Run `cloud_details(, "nlmixr2plot")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/nlmixr2plot/new/nlmixr2plot.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘nlmixr2plot/DESCRIPTION’ ... OK +* this is package ‘nlmixr2plot’ version ‘2.0.7’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'nlmixr2est', 'nlmixr2extra' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/nlmixr2plot/old/nlmixr2plot.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘nlmixr2plot/DESCRIPTION’ ... OK +* this is package ‘nlmixr2plot’ version ‘2.0.7’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'nlmixr2est', 'nlmixr2extra' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +# nlmixr2rpt + +
+ +* Version: 0.2.0 +* GitHub: https://github.com/nlmixr2/nlmixr2rpt +* Source code: https://github.com/cran/nlmixr2rpt +* Date/Publication: 2023-06-06 13:10:05 UTC +* Number of recursive dependencies: 216 + +Run `cloud_details(, "nlmixr2rpt")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/nlmixr2rpt/new/nlmixr2rpt.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘nlmixr2rpt/DESCRIPTION’ ... OK +* this is package ‘nlmixr2rpt’ version ‘0.2.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: + 'nlmixr2', 'nlmixr2extra', 'xpose.nlmixr2' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/nlmixr2rpt/old/nlmixr2rpt.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘nlmixr2rpt/DESCRIPTION’ ... OK +* this is package ‘nlmixr2rpt’ version ‘0.2.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: + 'nlmixr2', 'nlmixr2extra', 'xpose.nlmixr2' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# numbat + +
+ +* Version: 1.3.2-1 +* GitHub: https://github.com/kharchenkolab/numbat +* Source code: https://github.com/cran/numbat +* Date/Publication: 2023-06-17 18:50:02 UTC +* Number of recursive dependencies: 136 + +Run `cloud_details(, "numbat")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/numbat/new/numbat.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘numbat/DESCRIPTION’ ... OK +* this is package ‘numbat’ version ‘1.3.2-1’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'ggtree', 'scistreer' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/numbat/old/numbat.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘numbat/DESCRIPTION’ ... OK +* this is package ‘numbat’ version ‘1.3.2-1’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'ggtree', 'scistreer' + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# oHMMed + +
+ +* Version: 1.0.0 +* GitHub: https://github.com/LynetteCaitlin/oHMMed +* Source code: https://github.com/cran/oHMMed +* Date/Publication: 2023-07-05 14:30:02 UTC +* Number of recursive dependencies: 117 + +Run `cloud_details(, "oHMMed")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/oHMMed/new/oHMMed.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘oHMMed/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘oHMMed’ version ‘1.0.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘cvms’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/oHMMed/old/oHMMed.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘oHMMed/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘oHMMed’ version ‘1.0.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘cvms’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +# OlinkAnalyze + +
+ +* Version: 3.5.1 +* GitHub: NA +* Source code: https://github.com/cran/OlinkAnalyze +* Date/Publication: 2023-08-08 21:00:02 UTC +* Number of recursive dependencies: 212 + +Run `cloud_details(, "OlinkAnalyze")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/OlinkAnalyze/new/OlinkAnalyze.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘OlinkAnalyze/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘OlinkAnalyze’ version ‘3.5.1’ +* package encoding: UTF-8 +* checking package namespace information ... OK +... +* checking for unstated dependencies in vignettes ... OK +* checking package vignettes in ‘inst/doc’ ... OK +* checking running R code from vignettes ... NONE + ‘OutlierExclusion.Rmd’ using ‘UTF-8’... OK + ‘Vignett.Rmd’ using ‘UTF-8’... OK + ‘bridging_introduction.Rmd’ using ‘UTF-8’... OK + ‘plate_randomizer.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK +* DONE +Status: 1 NOTE + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/OlinkAnalyze/old/OlinkAnalyze.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘OlinkAnalyze/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘OlinkAnalyze’ version ‘3.5.1’ +* package encoding: UTF-8 +* checking package namespace information ... OK +... +* checking for unstated dependencies in vignettes ... OK +* checking package vignettes in ‘inst/doc’ ... OK +* checking running R code from vignettes ... NONE + ‘OutlierExclusion.Rmd’ using ‘UTF-8’... OK + ‘Vignett.Rmd’ using ‘UTF-8’... OK + ‘bridging_introduction.Rmd’ using ‘UTF-8’... OK + ‘plate_randomizer.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK +* DONE +Status: 1 NOTE + + + + + +``` +# OpenMx + +
+ +* Version: 2.21.8 +* GitHub: https://github.com/OpenMx/OpenMx +* Source code: https://github.com/cran/OpenMx +* Date/Publication: 2023-04-05 20:43:20 UTC +* Number of recursive dependencies: 147 + +Run `cloud_details(, "OpenMx")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/OpenMx/new/OpenMx.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘OpenMx/DESCRIPTION’ ... OK +* this is package ‘OpenMx’ version ‘2.21.8’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... NOTE +... +* checking for unstated dependencies in vignettes ... OK +* checking package vignettes in ‘inst/doc’ ... OK +* checking running R code from vignettes ... NONE + ‘deriv.Rmd’ using ‘UTF-8’... OK + ‘reg_mimic.Rmd’ using ‘UTF-8’... OK + ‘factor_analysis.Rmd’ using ‘UTF-8’... OK + ‘regularization.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK +* DONE +Status: 4 NOTEs + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/OpenMx/old/OpenMx.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘OpenMx/DESCRIPTION’ ... OK +* this is package ‘OpenMx’ version ‘2.21.8’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... NOTE +... +* checking for unstated dependencies in vignettes ... OK +* checking package vignettes in ‘inst/doc’ ... OK +* checking running R code from vignettes ... NONE + ‘deriv.Rmd’ using ‘UTF-8’... OK + ‘reg_mimic.Rmd’ using ‘UTF-8’... OK + ‘factor_analysis.Rmd’ using ‘UTF-8’... OK + ‘regularization.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK +* DONE +Status: 4 NOTEs + + + + + +``` +# phylosem + +
+ +* Version: 1.1.0 +* GitHub: NA +* Source code: https://github.com/cran/phylosem +* Date/Publication: 2023-10-06 20:30:02 UTC +* Number of recursive dependencies: 206 + +Run `cloud_details(, "phylosem")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/phylosem/new/phylosem.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘phylosem/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘phylosem’ version ‘1.1.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘phylopath’ + +Package which this enhances but not available for checking: ‘DiagrammeR’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/phylosem/old/phylosem.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘phylosem/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘phylosem’ version ‘1.1.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘phylopath’ + +Package which this enhances but not available for checking: ‘DiagrammeR’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# PsychWordVec + +
+ +* Version: 2023.9 +* GitHub: https://github.com/psychbruce/PsychWordVec +* Source code: https://github.com/cran/PsychWordVec +* Date/Publication: 2023-09-27 14:20:02 UTC +* Number of recursive dependencies: 234 + +Run `cloud_details(, "PsychWordVec")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/PsychWordVec/new/PsychWordVec.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘PsychWordVec/DESCRIPTION’ ... OK +* this is package ‘PsychWordVec’ version ‘2023.9’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘bruceR’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/PsychWordVec/old/PsychWordVec.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘PsychWordVec/DESCRIPTION’ ... OK +* this is package ‘PsychWordVec’ version ‘2023.9’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘bruceR’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# RcppCensSpatial + +
+ +* Version: 0.3.0 +* GitHub: NA +* Source code: https://github.com/cran/RcppCensSpatial +* Date/Publication: 2022-06-27 23:00:02 UTC +* Number of recursive dependencies: 64 + +Run `cloud_details(, "RcppCensSpatial")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/RcppCensSpatial/new/RcppCensSpatial.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘RcppCensSpatial/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘RcppCensSpatial’ version ‘0.3.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘MomTrunc’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/RcppCensSpatial/old/RcppCensSpatial.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘RcppCensSpatial/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘RcppCensSpatial’ version ‘0.3.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘MomTrunc’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# rmsb + +
+ +* Version: 1.0-0 +* GitHub: NA +* Source code: https://github.com/cran/rmsb +* Date/Publication: 2023-09-26 13:10:02 UTC +* Number of recursive dependencies: 144 + +Run `cloud_details(, "rmsb")` for more info + +
+ +## In both + +* checking whether package ‘rmsb’ can be installed ... ERROR + ``` + Installation failed. + See ‘/tmp/workdir/rmsb/new/rmsb.Rcheck/00install.out’ for details. + ``` + +## Installation + +### Devel + +``` +* installing *source* package ‘rmsb’ ... +** package ‘rmsb’ successfully unpacked and MD5 sums checked +** using staged installation +Error in loadNamespace(x) : there is no package called ‘rstantools’ +Calls: loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart +Execution halted +ERROR: configuration failed for package ‘rmsb’ +* removing ‘/tmp/workdir/rmsb/new/rmsb.Rcheck/rmsb’ + + +``` +### CRAN + +``` +* installing *source* package ‘rmsb’ ... +** package ‘rmsb’ successfully unpacked and MD5 sums checked +** using staged installation +Error in loadNamespace(x) : there is no package called ‘rstantools’ +Calls: loadNamespace -> withRestarts -> withOneRestart -> doWithOneRestart +Execution halted +ERROR: configuration failed for package ‘rmsb’ +* removing ‘/tmp/workdir/rmsb/old/rmsb.Rcheck/rmsb’ + + +``` +# rstanarm + +
+ +* Version: 2.26.1 +* GitHub: https://github.com/stan-dev/rstanarm +* Source code: https://github.com/cran/rstanarm +* Date/Publication: 2023-09-13 22:50:03 UTC +* Number of recursive dependencies: 138 + +Run `cloud_details(, "rstanarm")` for more info + +
+ +## In both + +* checking whether package ‘rstanarm’ can be installed ... ERROR + ``` + Installation failed. + See ‘/tmp/workdir/rstanarm/new/rstanarm.Rcheck/00install.out’ for details. + ``` + +## Installation + +### Devel + +``` +* installing *source* package ‘rstanarm’ ... +** package ‘rstanarm’ successfully unpacked and MD5 sums checked +** using staged installation +** libs +"/opt/R/4.1.1/lib/R/bin/Rscript" -e "source(file.path('..', 'tools', 'make_cc.R')); make_cc(commandArgs(TRUE))" stan_files/lm.stan +Wrote C++ file "stan_files/lm.cc" + + +g++ -std=gnu++17 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I"../inst/include" -I"/opt/R/4.1.1/lib/R/site-library/StanHeaders/include/src" -DBOOST_DISABLE_ASSERTS -DEIGEN_NO_DEBUG -DBOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error -DUSE_STANC3 -D_HAS_AUTO_PTR_ETC=0 -I'/opt/R/4.1.1/lib/R/site-library/StanHeaders/include' -I'/opt/R/4.1.1/lib/R/site-library/rstan/include' -I'/opt/R/4.1.1/lib/R/site-library/BH/include' -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppEigen/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppParallel/include' -I/usr/local/include -I'/opt/R/4.1.1/lib/R/site-library/RcppParallel/include' -D_REENTRANT -DSTAN_THREADS -fpic -g -O2 -c stan_files/lm.cc -o stan_files/lm.o +In file included from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/Core:397, +... +stan_files/mvmer.hpp: In constructor ‘model_mvmer_namespace::model_mvmer::model_mvmer(stan::io::var_context&, unsigned int, std::ostream*)’: +stan_files/mvmer.hpp:5105:3: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without + 5105 | model_mvmer(stan::io::var_context& context__, + | ^~~~~~~~~~~ +g++: fatal error: Killed signal terminated program cc1plus +compilation terminated. +make: *** [/opt/R/4.1.1/lib/R/etc/Makeconf:175: stan_files/mvmer.o] Error 1 +rm stan_files/lm.cc stan_files/mvmer.cc +ERROR: compilation failed for package ‘rstanarm’ +* removing ‘/tmp/workdir/rstanarm/new/rstanarm.Rcheck/rstanarm’ + + +``` +### CRAN + +``` +* installing *source* package ‘rstanarm’ ... +** package ‘rstanarm’ successfully unpacked and MD5 sums checked +** using staged installation +** libs +"/opt/R/4.1.1/lib/R/bin/Rscript" -e "source(file.path('..', 'tools', 'make_cc.R')); make_cc(commandArgs(TRUE))" stan_files/lm.stan +Wrote C++ file "stan_files/lm.cc" + + +g++ -std=gnu++17 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I"../inst/include" -I"/opt/R/4.1.1/lib/R/site-library/StanHeaders/include/src" -DBOOST_DISABLE_ASSERTS -DEIGEN_NO_DEBUG -DBOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error -DUSE_STANC3 -D_HAS_AUTO_PTR_ETC=0 -I'/opt/R/4.1.1/lib/R/site-library/StanHeaders/include' -I'/opt/R/4.1.1/lib/R/site-library/rstan/include' -I'/opt/R/4.1.1/lib/R/site-library/BH/include' -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppEigen/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppParallel/include' -I/usr/local/include -I'/opt/R/4.1.1/lib/R/site-library/RcppParallel/include' -D_REENTRANT -DSTAN_THREADS -fpic -g -O2 -c stan_files/lm.cc -o stan_files/lm.o +In file included from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/Core:397, +... +stan_files/mvmer.hpp: In constructor ‘model_mvmer_namespace::model_mvmer::model_mvmer(stan::io::var_context&, unsigned int, std::ostream*)’: +stan_files/mvmer.hpp:5105:3: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without + 5105 | model_mvmer(stan::io::var_context& context__, + | ^~~~~~~~~~~ +g++: fatal error: Killed signal terminated program cc1plus +compilation terminated. +make: *** [/opt/R/4.1.1/lib/R/etc/Makeconf:175: stan_files/mvmer.o] Error 1 +rm stan_files/lm.cc stan_files/mvmer.cc +ERROR: compilation failed for package ‘rstanarm’ +* removing ‘/tmp/workdir/rstanarm/old/rstanarm.Rcheck/rstanarm’ + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# RVA + +
+ +* Version: 0.0.5 +* GitHub: https://github.com/THERMOSTATS/RVA +* Source code: https://github.com/cran/RVA +* Date/Publication: 2021-11-01 21:40:02 UTC +* Number of recursive dependencies: 210 + +Run `cloud_details(, "RVA")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/RVA/new/RVA.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘PsychWordVec/DESCRIPTION’ ... OK -* this is package ‘PsychWordVec’ version ‘0.3.2’ +* checking for file ‘RVA/DESCRIPTION’ ... OK +* this is package ‘RVA’ version ‘0.0.5’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘clusterProfiler’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/RVA/old/RVA.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘RVA/DESCRIPTION’ ... OK +* this is package ‘RVA’ version ‘0.0.5’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘clusterProfiler’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +# NA + +
+ +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 + +Run `cloud_details(, "NA")` for more info + +
+ +## Error before installation + +### Devel + +``` + + + + + + +``` +### CRAN + +``` + + + + + + +``` +# SCpubr + +
+ +* Version: 2.0.1 +* GitHub: https://github.com/enblacar/SCpubr +* Source code: https://github.com/cran/SCpubr +* Date/Publication: 2023-08-13 12:40:15 UTC +* Number of recursive dependencies: 295 + +Run `cloud_details(, "SCpubr")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/SCpubr/new/SCpubr.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘SCpubr/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘SCpubr’ version ‘2.0.1’ * package encoding: UTF-8 * checking package namespace information ... OK -* checking package dependencies ... ERROR -Package required but not available: ‘bruceR’ - -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. +... + [ FAIL 10 | WARN 0 | SKIP 381 | PASS 72 ] + Error: Test failures + Execution halted +* checking for unstated dependencies in vignettes ... OK +* checking package vignettes in ‘inst/doc’ ... OK +* checking running R code from vignettes ... NONE + ‘reference_manual.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK * DONE -Status: 1 ERROR +Status: 1 ERROR, 1 WARNING, 2 NOTEs @@ -2147,22 +3768,27 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/PsychWordVec/old/PsychWordVec.Rcheck’ +* using log directory ‘/tmp/workdir/SCpubr/old/SCpubr.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘PsychWordVec/DESCRIPTION’ ... OK -* this is package ‘PsychWordVec’ version ‘0.3.2’ +* checking for file ‘SCpubr/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘SCpubr’ version ‘2.0.1’ * package encoding: UTF-8 * checking package namespace information ... OK -* checking package dependencies ... ERROR -Package required but not available: ‘bruceR’ - -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. +... + [ FAIL 10 | WARN 0 | SKIP 381 | PASS 72 ] + Error: Test failures + Execution halted +* checking for unstated dependencies in vignettes ... OK +* checking package vignettes in ‘inst/doc’ ... OK +* checking running R code from vignettes ... NONE + ‘reference_manual.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK * DONE -Status: 1 ERROR +Status: 1 ERROR, 1 WARNING, 2 NOTEs @@ -2239,16 +3865,17 @@ Run `cloud_details(, "NA")` for more info ``` -# NA +# SSVS
-* Version: NA -* GitHub: NA -* Source code: https://github.com/cran/NA -* Number of recursive dependencies: 0 +* Version: 2.0.0 +* GitHub: https://github.com/sabainter/SSVS +* Source code: https://github.com/cran/SSVS +* Date/Publication: 2022-05-29 05:40:09 UTC +* Number of recursive dependencies: 124 -Run `cloud_details(, "NA")` for more info +Run `cloud_details(, "SSVS")` for more info
@@ -2257,7 +3884,22 @@ Run `cloud_details(, "NA")` for more info ### Devel ``` +* using log directory ‘/tmp/workdir/SSVS/new/SSVS.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘SSVS/DESCRIPTION’ ... OK +* this is package ‘SSVS’ version ‘2.0.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘BoomSpikeSlab’ +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR @@ -2267,24 +3909,39 @@ Run `cloud_details(, "NA")` for more info ### CRAN ``` +* using log directory ‘/tmp/workdir/SSVS/old/SSVS.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘SSVS/DESCRIPTION’ ... OK +* this is package ‘SSVS’ version ‘2.0.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘BoomSpikeSlab’ +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR ``` -# RcppCensSpatial +# streamDAG
-* Version: 0.3.0 +* Version: 1.5 * GitHub: NA -* Source code: https://github.com/cran/RcppCensSpatial -* Date/Publication: 2022-06-27 23:00:02 UTC -* Number of recursive dependencies: 64 +* Source code: https://github.com/cran/streamDAG +* Date/Publication: 2023-10-06 18:50:02 UTC +* Number of recursive dependencies: 133 -Run `cloud_details(, "RcppCensSpatial")` for more info +Run `cloud_details(, "streamDAG")` for more info
@@ -2293,18 +3950,16 @@ Run `cloud_details(, "RcppCensSpatial")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/RcppCensSpatial/new/RcppCensSpatial.Rcheck’ +* using log directory ‘/tmp/workdir/streamDAG/new/streamDAG.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘RcppCensSpatial/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘RcppCensSpatial’ version ‘0.3.0’ -* package encoding: UTF-8 +* checking for file ‘streamDAG/DESCRIPTION’ ... OK +* this is package ‘streamDAG’ version ‘1.5’ * checking package namespace information ... OK * checking package dependencies ... ERROR -Package required but not available: ‘MomTrunc’ +Package required but not available: ‘asbio’ See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ manual. @@ -2319,18 +3974,16 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/RcppCensSpatial/old/RcppCensSpatial.Rcheck’ +* using log directory ‘/tmp/workdir/streamDAG/old/streamDAG.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘RcppCensSpatial/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘RcppCensSpatial’ version ‘0.3.0’ -* package encoding: UTF-8 +* checking for file ‘streamDAG/DESCRIPTION’ ... OK +* this is package ‘streamDAG’ version ‘1.5’ * checking package namespace information ... OK * checking package dependencies ... ERROR -Package required but not available: ‘MomTrunc’ +Package required but not available: ‘asbio’ See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ manual. @@ -2342,16 +3995,17 @@ Status: 1 ERROR ``` -# NA +# TestAnaAPP
-* Version: NA -* GitHub: NA -* Source code: https://github.com/cran/NA -* Number of recursive dependencies: 0 +* Version: 0.1.2 +* GitHub: https://github.com/jiangyouxiang/TestAnaAPP +* Source code: https://github.com/cran/TestAnaAPP +* Date/Publication: 2023-09-11 08:40:05 UTC +* Number of recursive dependencies: 240 -Run `cloud_details(, "NA")` for more info +Run `cloud_details(, "TestAnaAPP")` for more info
@@ -2360,7 +4014,22 @@ Run `cloud_details(, "NA")` for more info ### Devel ``` +* using log directory ‘/tmp/workdir/TestAnaAPP/new/TestAnaAPP.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘TestAnaAPP/DESCRIPTION’ ... OK +* this is package ‘TestAnaAPP’ version ‘0.1.2’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘bruceR’ +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR @@ -2370,23 +4039,39 @@ Run `cloud_details(, "NA")` for more info ### CRAN ``` +* using log directory ‘/tmp/workdir/TestAnaAPP/old/TestAnaAPP.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘TestAnaAPP/DESCRIPTION’ ... OK +* this is package ‘TestAnaAPP’ version ‘0.1.2’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘bruceR’ +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR ``` -# NA +# tidySEM
-* Version: NA -* GitHub: NA -* Source code: https://github.com/cran/NA -* Number of recursive dependencies: 0 +* Version: 0.2.4 +* GitHub: https://github.com/cjvanlissa/tidySEM +* Source code: https://github.com/cran/tidySEM +* Date/Publication: 2023-05-01 20:00:06 UTC +* Number of recursive dependencies: 191 -Run `cloud_details(, "NA")` for more info +Run `cloud_details(, "tidySEM")` for more info
@@ -2395,7 +4080,27 @@ Run `cloud_details(, "NA")` for more info ### Devel ``` - +* using log directory ‘/tmp/workdir/tidySEM/new/tidySEM.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘tidySEM/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘tidySEM’ version ‘0.2.4’ +* package encoding: UTF-8 +* checking package namespace information ... OK +... + ‘Plotting_graphs.Rmd’ using ‘UTF-8’... OK + ‘Tabulating_results.Rmd’ using ‘UTF-8’... OK + ‘lca_confirmatory.Rmd’ using ‘UTF-8’... OK + ‘lca_exploratory.Rmd’ using ‘UTF-8’... OK + ‘lca_lcga.Rmd’ using ‘UTF-8’... OK + ‘lca_ordinal.Rmd’ using ‘UTF-8’... OK + ‘sem_graph.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK +* DONE +Status: 1 NOTE @@ -2405,7 +4110,27 @@ Run `cloud_details(, "NA")` for more info ### CRAN ``` - +* using log directory ‘/tmp/workdir/tidySEM/old/tidySEM.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘tidySEM/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘tidySEM’ version ‘0.2.4’ +* package encoding: UTF-8 +* checking package namespace information ... OK +... + ‘Plotting_graphs.Rmd’ using ‘UTF-8’... OK + ‘Tabulating_results.Rmd’ using ‘UTF-8’... OK + ‘lca_confirmatory.Rmd’ using ‘UTF-8’... OK + ‘lca_exploratory.Rmd’ using ‘UTF-8’... OK + ‘lca_lcga.Rmd’ using ‘UTF-8’... OK + ‘lca_ordinal.Rmd’ using ‘UTF-8’... OK + ‘sem_graph.Rmd’ using ‘UTF-8’... OK +* checking re-building of vignette outputs ... OK +* DONE +Status: 1 NOTE @@ -2447,95 +4172,17 @@ Run `cloud_details(, "NA")` for more info ``` -# rstan - -
- -* Version: 2.21.8 -* GitHub: https://github.com/stan-dev/rstan -* Source code: https://github.com/cran/rstan -* Date/Publication: 2023-01-17 12:40:02 UTC -* Number of recursive dependencies: 112 - -Run `cloud_details(, "rstan")` for more info - -
- -## In both - -* checking whether package ‘rstan’ can be installed ... ERROR - ``` - Installation failed. - See ‘/tmp/workdir/rstan/new/rstan.Rcheck/00install.out’ for details. - ``` - -## Installation - -### Devel - -``` -* installing *source* package ‘rstan’ ... -** package ‘rstan’ successfully unpacked and MD5 sums checked -** using staged installation -** libs -g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I"../inst/include" -I"../inst/include/boost_not_in_BH" -I"." -DBOOST_DISABLE_ASSERTS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -DBOOST_NO_AUTO_PTR -D_REENTRANT -DSTAN_THREADS -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppEigen/include' -I'/opt/R/4.1.1/lib/R/site-library/BH/include' -I'/opt/R/4.1.1/lib/R/site-library/StanHeaders/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppParallel/include' -I/usr/local/include -fpic -g -O2 -c chains.cpp -o chains.o -In file included from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/Core:397, - from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/Dense:1, - from /opt/R/4.1.1/lib/R/site-library/StanHeaders/include/stan/math/prim/mat/fun/Eigen.hpp:13, - from /opt/R/4.1.1/lib/R/site-library/StanHeaders/include/stan/math/prim/mat/meta/append_return_type.hpp:4, - from /opt/R/4.1.1/lib/R/site-library/StanHeaders/include/stan/math/prim/meta.hpp:9, -... - 24 | # define BOOST_PRAGMA_MESSAGE(x) _Pragma(BOOST_STRINGIZE(message(x))) - | ^~~~~~~ -/opt/R/4.1.1/lib/R/site-library/BH/include/boost/spirit/include/phoenix_core.hpp:12:1: note: in expansion of macro ‘BOOST_HEADER_DEPRECATED’ - 12 | BOOST_HEADER_DEPRECATED("") - | ^~~~~~~~~~~~~~~~~~~~~~~ -g++: fatal error: Killed signal terminated program cc1plus -compilation terminated. -make: *** [/opt/R/4.1.1/lib/R/etc/Makeconf:177: grammar_inst.o] Error 1 -ERROR: compilation failed for package ‘rstan’ -* removing ‘/tmp/workdir/rstan/new/rstan.Rcheck/rstan’ - - -``` -### CRAN - -``` -* installing *source* package ‘rstan’ ... -** package ‘rstan’ successfully unpacked and MD5 sums checked -** using staged installation -** libs -g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I"../inst/include" -I"../inst/include/boost_not_in_BH" -I"." -DBOOST_DISABLE_ASSERTS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -DBOOST_NO_AUTO_PTR -D_REENTRANT -DSTAN_THREADS -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppEigen/include' -I'/opt/R/4.1.1/lib/R/site-library/BH/include' -I'/opt/R/4.1.1/lib/R/site-library/StanHeaders/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppParallel/include' -I/usr/local/include -fpic -g -O2 -c chains.cpp -o chains.o -In file included from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/Core:397, - from /opt/R/4.1.1/lib/R/site-library/RcppEigen/include/Eigen/Dense:1, - from /opt/R/4.1.1/lib/R/site-library/StanHeaders/include/stan/math/prim/mat/fun/Eigen.hpp:13, - from /opt/R/4.1.1/lib/R/site-library/StanHeaders/include/stan/math/prim/mat/meta/append_return_type.hpp:4, - from /opt/R/4.1.1/lib/R/site-library/StanHeaders/include/stan/math/prim/meta.hpp:9, -... - 24 | # define BOOST_PRAGMA_MESSAGE(x) _Pragma(BOOST_STRINGIZE(message(x))) - | ^~~~~~~ -/opt/R/4.1.1/lib/R/site-library/BH/include/boost/spirit/include/phoenix_core.hpp:12:1: note: in expansion of macro ‘BOOST_HEADER_DEPRECATED’ - 12 | BOOST_HEADER_DEPRECATED("") - | ^~~~~~~~~~~~~~~~~~~~~~~ -g++: fatal error: Killed signal terminated program cc1plus -compilation terminated. -make: *** [/opt/R/4.1.1/lib/R/etc/Makeconf:177: grammar_inst.o] Error 1 -ERROR: compilation failed for package ‘rstan’ -* removing ‘/tmp/workdir/rstan/old/rstan.Rcheck/rstan’ - - -``` -# RVA +# tinyarray
-* Version: 0.0.5 -* GitHub: https://github.com/THERMOSTATS/RVA -* Source code: https://github.com/cran/RVA -* Date/Publication: 2021-11-01 21:40:02 UTC -* Number of recursive dependencies: 209 +* Version: 2.3.1 +* GitHub: https://github.com/xjsun1221/tinyarray +* Source code: https://github.com/cran/tinyarray +* Date/Publication: 2023-08-18 08:20:02 UTC +* Number of recursive dependencies: 233 -Run `cloud_details(, "RVA")` for more info +Run `cloud_details(, "tinyarray")` for more info
@@ -2544,13 +4191,14 @@ Run `cloud_details(, "RVA")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/RVA/new/RVA.Rcheck’ +* using log directory ‘/tmp/workdir/tinyarray/new/tinyarray.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘RVA/DESCRIPTION’ ... OK -* this is package ‘RVA’ version ‘0.0.5’ +* checking for file ‘tinyarray/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘tinyarray’ version ‘2.3.1’ * package encoding: UTF-8 * checking package namespace information ... OK * checking package dependencies ... ERROR @@ -2569,121 +4217,40 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/RVA/old/RVA.Rcheck’ +* using log directory ‘/tmp/workdir/tinyarray/old/tinyarray.Rcheck’ * using R version 4.1.1 (2021-08-10) * using platform: x86_64-pc-linux-gnu (64-bit) * using session charset: UTF-8 * using option ‘--no-manual’ -* checking for file ‘RVA/DESCRIPTION’ ... OK -* this is package ‘RVA’ version ‘0.0.5’ -* package encoding: UTF-8 -* checking package namespace information ... OK -* checking package dependencies ... ERROR -Package required but not available: ‘clusterProfiler’ - -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR - - - - - -``` -# rxode2 - -
- -* Version: 2.0.11 -* GitHub: https://github.com/nlmixr2/rxode2 -* Source code: https://github.com/cran/rxode2 -* Date/Publication: 2022-11-01 21:45:04 UTC -* Number of recursive dependencies: 191 - -Run `cloud_details(, "rxode2")` for more info - -
- -## In both - -* checking whether package ‘rxode2’ can be installed ... ERROR - ``` - Installation failed. - See ‘/tmp/workdir/rxode2/new/rxode2.Rcheck/00install.out’ for details. - ``` - -* checking package dependencies ... NOTE - ``` - Package suggested but not available for checking: ‘symengine’ - ``` - -## Installation - -### Devel - -``` -* installing *source* package ‘rxode2’ ... -** package ‘rxode2’ successfully unpacked and MD5 sums checked -** using staged installation - -R version 4.1.1 (2021-08-10) -- "Kick Things" -Copyright (C) 2021 The R Foundation for Statistical Computing -Platform: x86_64-pc-linux-gnu (64-bit) - -R is free software and comes with ABSOLUTELY NO WARRANTY. -You are welcome to redistribute it under certain conditions. -... -gcc -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I'/opt/R/4.1.1/lib/R/site-library/rxode2parse/include' -I'/opt/R/4.1.1/lib/R/site-library/rxode2random/include' -I'/opt/R/4.1.1/lib/R/site-library/rxode2et/include' -I'/opt/R/4.1.1/lib/R/site-library/PreciseSums/include' -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/BH/include' -I/usr/local/include -D_isrxode2_ -fpic -g -O2 -c dscal.c -o dscal.o -gfortran -fno-optimize-sibling-calls -fpic -g -O2 -c dsphiv.f -o dsphiv.o -g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I'/opt/R/4.1.1/lib/R/site-library/rxode2parse/include' -I'/opt/R/4.1.1/lib/R/site-library/rxode2random/include' -I'/opt/R/4.1.1/lib/R/site-library/rxode2et/include' -I'/opt/R/4.1.1/lib/R/site-library/PreciseSums/include' -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/BH/include' -I/usr/local/include -fopenmp -D_isrxode2_ -DBOOST_DISABLE_ASSERTS -DBOOST_NO_CXX11_STATIC_ASSERT -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -DBOOST_NO_AUTO_PTR -D_REENTRANT -isystem"/opt/R/4.1.1/lib/R/site-library/BH/include" -fpic -g -O2 -c etTran.cpp -o etTran.o -etTran.cpp:333:10: fatal error: rxode2etConvertMethod.h: No such file or directory - 333 | #include - | ^~~~~~~~~~~~~~~~~~~~~~~~~ -compilation terminated. -make: *** [/opt/R/4.1.1/lib/R/etc/Makeconf:177: etTran.o] Error 1 -ERROR: compilation failed for package ‘rxode2’ -* removing ‘/tmp/workdir/rxode2/new/rxode2.Rcheck/rxode2’ - +* checking for file ‘tinyarray/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘tinyarray’ version ‘2.3.1’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘clusterProfiler’ -``` -### CRAN +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR -``` -* installing *source* package ‘rxode2’ ... -** package ‘rxode2’ successfully unpacked and MD5 sums checked -** using staged installation -R version 4.1.1 (2021-08-10) -- "Kick Things" -Copyright (C) 2021 The R Foundation for Statistical Computing -Platform: x86_64-pc-linux-gnu (64-bit) -R is free software and comes with ABSOLUTELY NO WARRANTY. -You are welcome to redistribute it under certain conditions. -... -gcc -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I'/opt/R/4.1.1/lib/R/site-library/rxode2parse/include' -I'/opt/R/4.1.1/lib/R/site-library/rxode2random/include' -I'/opt/R/4.1.1/lib/R/site-library/rxode2et/include' -I'/opt/R/4.1.1/lib/R/site-library/PreciseSums/include' -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/BH/include' -I/usr/local/include -D_isrxode2_ -fpic -g -O2 -c dscal.c -o dscal.o -gfortran -fno-optimize-sibling-calls -fpic -g -O2 -c dsphiv.f -o dsphiv.o -g++ -std=gnu++14 -I"/opt/R/4.1.1/lib/R/include" -DNDEBUG -I'/opt/R/4.1.1/lib/R/site-library/rxode2parse/include' -I'/opt/R/4.1.1/lib/R/site-library/rxode2random/include' -I'/opt/R/4.1.1/lib/R/site-library/rxode2et/include' -I'/opt/R/4.1.1/lib/R/site-library/PreciseSums/include' -I'/opt/R/4.1.1/lib/R/site-library/Rcpp/include' -I'/opt/R/4.1.1/lib/R/site-library/RcppArmadillo/include' -I'/opt/R/4.1.1/lib/R/site-library/BH/include' -I/usr/local/include -fopenmp -D_isrxode2_ -DBOOST_DISABLE_ASSERTS -DBOOST_NO_CXX11_STATIC_ASSERT -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -DBOOST_NO_AUTO_PTR -D_REENTRANT -isystem"/opt/R/4.1.1/lib/R/site-library/BH/include" -fpic -g -O2 -c etTran.cpp -o etTran.o -etTran.cpp:333:10: fatal error: rxode2etConvertMethod.h: No such file or directory - 333 | #include - | ^~~~~~~~~~~~~~~~~~~~~~~~~ -compilation terminated. -make: *** [/opt/R/4.1.1/lib/R/etc/Makeconf:177: etTran.o] Error 1 -ERROR: compilation failed for package ‘rxode2’ -* removing ‘/tmp/workdir/rxode2/old/rxode2.Rcheck/rxode2’ ``` -# NA +# TOmicsVis
-* Version: NA -* GitHub: NA -* Source code: https://github.com/cran/NA -* Number of recursive dependencies: 0 +* Version: 2.0.0 +* GitHub: https://github.com/benben-miao/TOmicsVis +* Source code: https://github.com/cran/TOmicsVis +* Date/Publication: 2023-08-28 18:30:02 UTC +* Number of recursive dependencies: 258 -Run `cloud_details(, "NA")` for more info +Run `cloud_details(, "TOmicsVis")` for more info
@@ -2692,7 +4259,23 @@ Run `cloud_details(, "NA")` for more info ### Devel ``` +* using log directory ‘/tmp/workdir/TOmicsVis/new/TOmicsVis.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘TOmicsVis/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘TOmicsVis’ version ‘2.0.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'clusterProfiler', 'enrichplot' +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR @@ -2702,24 +4285,39 @@ Run `cloud_details(, "NA")` for more info ### CRAN ``` +* using log directory ‘/tmp/workdir/TOmicsVis/old/TOmicsVis.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘TOmicsVis/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘TOmicsVis’ version ‘2.0.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Packages required but not available: 'clusterProfiler', 'enrichplot' +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR ``` -# SCpubr +# NA
-* Version: 1.1.2 -* GitHub: https://github.com/enblacar/SCpubr -* Source code: https://github.com/cran/SCpubr -* Date/Publication: 2023-01-18 12:20:02 UTC -* Number of recursive dependencies: 290 +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "SCpubr")` for more info +Run `cloud_details(, "NA")` for more info
@@ -2728,27 +4326,7 @@ Run `cloud_details(, "SCpubr")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/SCpubr/new/SCpubr.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘SCpubr/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘SCpubr’ version ‘1.1.2’ -* package encoding: UTF-8 -* checking package namespace information ... OK -... -* checking for unstated dependencies in ‘tests’ ... OK -* checking tests ... OK - Running ‘testthat.R’ -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘reference_manual.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK -* DONE -Status: 1 WARNING, 2 NOTEs + @@ -2758,44 +4336,23 @@ Status: 1 WARNING, 2 NOTEs ### CRAN ``` -* using log directory ‘/tmp/workdir/SCpubr/old/SCpubr.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘SCpubr/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘SCpubr’ version ‘1.1.2’ -* package encoding: UTF-8 -* checking package namespace information ... OK -... -* checking for unstated dependencies in ‘tests’ ... OK -* checking tests ... OK - Running ‘testthat.R’ -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘reference_manual.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK -* DONE -Status: 1 WARNING, 2 NOTEs + ``` -# tidySEM +# NA
-* Version: 0.2.3 -* GitHub: https://github.com/cjvanlissa/tidySEM -* Source code: https://github.com/cran/tidySEM -* Date/Publication: 2022-04-14 17:50:02 UTC -* Number of recursive dependencies: 173 +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "tidySEM")` for more info +Run `cloud_details(, "NA")` for more info
@@ -2804,27 +4361,7 @@ Run `cloud_details(, "tidySEM")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/tidySEM/new/tidySEM.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘tidySEM/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘tidySEM’ version ‘0.2.3’ -* package encoding: UTF-8 -* checking package namespace information ... OK -... -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘Generating_syntax.Rmd’ using ‘UTF-8’... OK - ‘Plotting_graphs.Rmd’ using ‘UTF-8’... OK - ‘Tabulating_results.Rmd’ using ‘UTF-8’... OK - ‘sem_graph.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK -* DONE -Status: 1 NOTE + @@ -2834,27 +4371,7 @@ Status: 1 NOTE ### CRAN ``` -* using log directory ‘/tmp/workdir/tidySEM/old/tidySEM.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘tidySEM/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘tidySEM’ version ‘0.2.3’ -* package encoding: UTF-8 -* checking package namespace information ... OK -... -* checking for unstated dependencies in vignettes ... OK -* checking package vignettes in ‘inst/doc’ ... OK -* checking running R code from vignettes ... NONE - ‘Generating_syntax.Rmd’ using ‘UTF-8’... OK - ‘Plotting_graphs.Rmd’ using ‘UTF-8’... OK - ‘Tabulating_results.Rmd’ using ‘UTF-8’... OK - ‘sem_graph.Rmd’ using ‘UTF-8’... OK -* checking re-building of vignette outputs ... OK -* DONE -Status: 1 NOTE + @@ -2896,17 +4413,16 @@ Run `cloud_details(, "NA")` for more info ``` -# tinyarray +# NA
-* Version: 2.2.9 -* GitHub: https://github.com/xjsun1221/tinyarray -* Source code: https://github.com/cran/tinyarray -* Date/Publication: 2023-03-04 07:40:02 UTC -* Number of recursive dependencies: 229 +* Version: NA +* GitHub: NA +* Source code: https://github.com/cran/NA +* Number of recursive dependencies: 0 -Run `cloud_details(, "tinyarray")` for more info +Run `cloud_details(, "NA")` for more info
@@ -2915,23 +4431,7 @@ Run `cloud_details(, "tinyarray")` for more info ### Devel ``` -* using log directory ‘/tmp/workdir/tinyarray/new/tinyarray.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘tinyarray/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘tinyarray’ version ‘2.2.9’ -* package encoding: UTF-8 -* checking package namespace information ... OK -* checking package dependencies ... ERROR -Package required but not available: ‘clusterProfiler’ -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR @@ -2941,23 +4441,7 @@ Status: 1 ERROR ### CRAN ``` -* using log directory ‘/tmp/workdir/tinyarray/old/tinyarray.Rcheck’ -* using R version 4.1.1 (2021-08-10) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* using option ‘--no-manual’ -* checking for file ‘tinyarray/DESCRIPTION’ ... OK -* checking extension type ... Package -* this is package ‘tinyarray’ version ‘2.2.9’ -* package encoding: UTF-8 -* checking package namespace information ... OK -* checking package dependencies ... ERROR -Package required but not available: ‘clusterProfiler’ -See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ -manual. -* DONE -Status: 1 ERROR @@ -2972,7 +4456,7 @@ Status: 1 ERROR * GitHub: NA * Source code: https://github.com/cran/valse * Date/Publication: 2021-05-31 08:00:02 UTC -* Number of recursive dependencies: 51 +* Number of recursive dependencies: 56 Run `cloud_details(, "valse")` for more info @@ -3116,11 +4600,11 @@ Run `cloud_details(, "NA")` for more info
-* Version: 0.2.5 +* Version: 0.2.8 * GitHub: NA * Source code: https://github.com/cran/vivid -* Date/Publication: 2023-02-13 16:40:02 UTC -* Number of recursive dependencies: 206 +* Date/Publication: 2023-07-10 22:20:02 UTC +* Number of recursive dependencies: 212 Run `cloud_details(, "vivid")` for more info @@ -3137,18 +4621,18 @@ Run `cloud_details(, "vivid")` for more info * using session charset: UTF-8 * using option ‘--no-manual’ * checking for file ‘vivid/DESCRIPTION’ ... OK -* this is package ‘vivid’ version ‘0.2.5’ +* this is package ‘vivid’ version ‘0.2.8’ * package encoding: UTF-8 * checking package namespace information ... OK * checking package dependencies ... NOTE ... -* checking tests ... OK - Running ‘testthat.R’ +* checking installed files from ‘inst/doc’ ... OK +* checking files in ‘vignettes’ ... OK +* checking examples ... OK * checking for unstated dependencies in vignettes ... OK * checking package vignettes in ‘inst/doc’ ... OK * checking running R code from vignettes ... NONE - ‘vivid.Rmd’ using ‘UTF-8’... OK - ‘vividQStart.Rmd’ using ‘UTF-8’... OK + ‘vividVignette.Rmd’ using ‘UTF-8’... OK * checking re-building of vignette outputs ... OK * DONE Status: 1 NOTE @@ -3167,18 +4651,18 @@ Status: 1 NOTE * using session charset: UTF-8 * using option ‘--no-manual’ * checking for file ‘vivid/DESCRIPTION’ ... OK -* this is package ‘vivid’ version ‘0.2.5’ +* this is package ‘vivid’ version ‘0.2.8’ * package encoding: UTF-8 * checking package namespace information ... OK * checking package dependencies ... NOTE ... -* checking tests ... OK - Running ‘testthat.R’ +* checking installed files from ‘inst/doc’ ... OK +* checking files in ‘vignettes’ ... OK +* checking examples ... OK * checking for unstated dependencies in vignettes ... OK * checking package vignettes in ‘inst/doc’ ... OK * checking running R code from vignettes ... NONE - ‘vivid.Rmd’ using ‘UTF-8’... OK - ‘vividQStart.Rmd’ using ‘UTF-8’... OK + ‘vividVignette.Rmd’ using ‘UTF-8’... OK * checking re-building of vignette outputs ... OK * DONE Status: 1 NOTE @@ -3257,6 +4741,78 @@ Run `cloud_details(, "NA")` for more info +``` +# xpose.nlmixr2 + +
+ +* Version: 0.4.0 +* GitHub: NA +* Source code: https://github.com/cran/xpose.nlmixr2 +* Date/Publication: 2022-06-08 09:10:02 UTC +* Number of recursive dependencies: 156 + +Run `cloud_details(, "xpose.nlmixr2")` for more info + +
+ +## Error before installation + +### Devel + +``` +* using log directory ‘/tmp/workdir/xpose.nlmixr2/new/xpose.nlmixr2.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘xpose.nlmixr2/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘xpose.nlmixr2’ version ‘0.4.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘nlmixr2est’ + +Package suggested but not available for checking: ‘nlmixr2’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + +``` +### CRAN + +``` +* using log directory ‘/tmp/workdir/xpose.nlmixr2/old/xpose.nlmixr2.Rcheck’ +* using R version 4.1.1 (2021-08-10) +* using platform: x86_64-pc-linux-gnu (64-bit) +* using session charset: UTF-8 +* using option ‘--no-manual’ +* checking for file ‘xpose.nlmixr2/DESCRIPTION’ ... OK +* checking extension type ... Package +* this is package ‘xpose.nlmixr2’ version ‘0.4.0’ +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... ERROR +Package required but not available: ‘nlmixr2est’ + +Package suggested but not available for checking: ‘nlmixr2’ + +See section ‘The DESCRIPTION file’ in the ‘Writing R Extensions’ +manual. +* DONE +Status: 1 ERROR + + + + + ``` # NA diff --git a/revdep/problems.md b/revdep/problems.md index 97198cc243..70d42f0dd7 100644 --- a/revdep/problems.md +++ b/revdep/problems.md @@ -1,14 +1,14 @@ -# afex +# jfa
-* Version: 1.2-1 -* GitHub: https://github.com/singmann/afex -* Source code: https://github.com/cran/afex -* Date/Publication: 2023-01-09 08:40:11 UTC -* Number of recursive dependencies: 224 +* Version: 0.7.0 +* GitHub: https://github.com/koenderks/jfa +* Source code: https://github.com/cran/jfa +* Date/Publication: 2023-10-04 14:50:02 UTC +* Number of recursive dependencies: 187 -Run `cloud_details(, "afex")` for more info +Run `cloud_details(, "jfa")` for more info
@@ -17,143 +17,23 @@ Run `cloud_details(, "afex")` for more info * checking re-building of vignette outputs ... WARNING ``` Error(s) in re-building vignettes: - --- re-building ‘afex_analysing_accuracy_data.Rmd’ using rmarkdown - Quitting from lines 326-331 (afex_analysing_accuracy_data.Rmd) - Error: processing vignette 'afex_analysing_accuracy_data.Rmd' failed with diagnostics: - Problem while computing position. - ℹ Error occurred in the 1st layer. - Caused by error in `ggplot2::remove_missing()`: - ! `na.rm` must be `TRUE` or `FALSE`, not an empty logical vector. - --- failed re-building ‘afex_analysing_accuracy_data.Rmd’ + --- re-building ‘algorithm-auditing.Rmd’ using rmarkdown + --- finished re-building ‘algorithm-auditing.Rmd’ - ... - --- finished re-building ‘assumptions_of_ANOVAs.Rmd’ - - --- re-building ‘introduction-mixed-models.pdf.asis’ using asis - --- finished re-building ‘introduction-mixed-models.pdf.asis’ + --- re-building ‘audit-sampling.Rmd’ using rmarkdown + --- finished re-building ‘audit-sampling.Rmd’ - SUMMARY: processing the following file failed: - ‘afex_analysing_accuracy_data.Rmd’ - - Error: Vignette re-building failed. - Execution halted - ``` - -# dalmatian - -
- -* Version: 1.0.0 -* GitHub: NA -* Source code: https://github.com/cran/dalmatian -* Date/Publication: 2021-11-22 19:40:02 UTC -* Number of recursive dependencies: 92 - -Run `cloud_details(, "dalmatian")` for more info - -
- -## Newly broken - -* checking re-building of vignette outputs ... WARNING - ``` - Error(s) in re-building vignettes: - --- re-building ‘beta-binomial-1.Rmd’ using rmarkdown - Quitting from lines 142-147 (beta-binomial-1.Rmd) - Error: processing vignette 'beta-binomial-1.Rmd' failed with diagnostics: - could not find function "discrete_range" - --- failed re-building ‘beta-binomial-1.Rmd’ + --- re-building ‘bayesian-sampling-workflow.Rmd’ using rmarkdown + --- finished re-building ‘bayesian-sampling-workflow.Rmd’ - --- re-building ‘gamma-1.Rmd’ using rmarkdown - Quitting from lines 144-149 (gamma-1.Rmd) - Error: processing vignette 'gamma-1.Rmd' failed with diagnostics: ... - --- re-building ‘weights-1-simulate.Rmd’ using rmarkdown - --- finished re-building ‘weights-1-simulate.Rmd’ - - SUMMARY: processing the following files failed: - ‘beta-binomial-1.Rmd’ ‘gamma-1.Rmd’ ‘negative-binomial-1.Rmd’ - ‘pied-flycatchers-1.Rmd’ ‘pied-flycatchers-2.Rmd’ - ‘pied-flycatchers-3.Rmd’ - - Error: Vignette re-building failed. - Execution halted - ``` - -# DriveML - -
- -* Version: 0.1.5 -* GitHub: https://github.com/daya6489/DriveML -* Source code: https://github.com/cran/DriveML -* Date/Publication: 2022-12-02 11:20:02 UTC -* Number of recursive dependencies: 119 - -Run `cloud_details(, "DriveML")` for more info - -
- -## Newly broken - -* checking re-building of vignette outputs ... WARNING - ``` - Error(s) in re-building vignettes: - ... - --- re-building ‘DriveML.Rmd’ using rmarkdown - Quitting from lines 341-343 (DriveML.Rmd) - Error: processing vignette 'DriveML.Rmd' failed with diagnostics: - could not find function "discrete_range" - --- failed re-building ‘DriveML.Rmd’ + --- finished re-building ‘sample-selection.Rmd’ - SUMMARY: processing the following file failed: - ‘DriveML.Rmd’ - - Error: Vignette re-building failed. - Execution halted - ``` - -## In both - -* checking data for non-ASCII characters ... NOTE - ``` - Note: found 8 marked UTF-8 strings - ``` - -# EcoEnsemble - -
- -* Version: 1.0.2 -* GitHub: NA -* Source code: https://github.com/cran/EcoEnsemble -* Date/Publication: 2023-03-17 15:00:05 UTC -* Number of recursive dependencies: 87 - -Run `cloud_details(, "EcoEnsemble")` for more info - -
- -## Newly broken - -* checking re-building of vignette outputs ... WARNING - ``` - Error(s) in re-building vignettes: - ... - --- re-building ‘EcoEnsemble.Rmd’ using rmarkdown - Quitting from lines 722-723 (EcoEnsemble.Rmd) - Error: processing vignette 'EcoEnsemble.Rmd' failed with diagnostics: - could not find function "discrete_range" - --- failed re-building ‘EcoEnsemble.Rmd’ - - --- re-building ‘ExploringPriors.Rmd’ using rmarkdown - --- finished re-building ‘ExploringPriors.Rmd’ - - --- re-building ‘SyntheticData.Rmd’ using rmarkdown - --- finished re-building ‘SyntheticData.Rmd’ + --- re-building ‘sampling-workflow.Rmd’ using rmarkdown + --- finished re-building ‘sampling-workflow.Rmd’ SUMMARY: processing the following file failed: - ‘EcoEnsemble.Rmd’ + ‘data-auditing.Rmd’ Error: Vignette re-building failed. Execution halted @@ -163,9 +43,10 @@ Run `cloud_details(, "EcoEnsemble")` for more info * checking installed package size ... NOTE ``` - installed size is 195.8Mb + installed size is 120.4Mb sub-directories of 1Mb or more: - libs 194.8Mb + doc 3.2Mb + libs 115.7Mb ``` * checking dependencies in R code ... NOTE @@ -180,191 +61,17 @@ Run `cloud_details(, "EcoEnsemble")` for more info GNU make is a SystemRequirements. ``` -# ggh4x - -
- -* Version: 0.2.3 -* GitHub: https://github.com/teunbrand/ggh4x -* Source code: https://github.com/cran/ggh4x -* Date/Publication: 2022-11-09 08:40:24 UTC -* Number of recursive dependencies: 79 - -Run `cloud_details(, "ggh4x")` for more info - -
- -## Newly broken - -* checking whether package ‘ggh4x’ can be installed ... ERROR - ``` - Installation failed. - See ‘/tmp/workdir/ggh4x/new/ggh4x.Rcheck/00install.out’ for details. - ``` - -## Installation - -### Devel - -``` -* installing *source* package ‘ggh4x’ ... -** package ‘ggh4x’ successfully unpacked and MD5 sums checked -** using staged installation -** R -** inst -** byte-compile and prepare package for lazy loading -Error in get(x, envir = ns, inherits = FALSE) : - object 'continuous_range' not found -Error: unable to load R code in package ‘ggh4x’ -Execution halted -ERROR: lazy loading failed for package ‘ggh4x’ -* removing ‘/tmp/workdir/ggh4x/new/ggh4x.Rcheck/ggh4x’ - - -``` -### CRAN - -``` -* installing *source* package ‘ggh4x’ ... -** package ‘ggh4x’ successfully unpacked and MD5 sums checked -** using staged installation -** R -** inst -** byte-compile and prepare package for lazy loading -** help -*** installing help indices -*** copying figures -** building package indices -** installing vignettes -** testing if installed package can be loaded from temporary location -** testing if installed package can be loaded from final location -** testing if installed package keeps a record of temporary installation path -* DONE (ggh4x) - - -``` -# ggtern - -
- -* Version: 3.4.1 -* GitHub: NA -* Source code: https://github.com/cran/ggtern -* Date/Publication: 2022-12-06 03:10:02 UTC -* Number of recursive dependencies: 42 - -Run `cloud_details(, "ggtern")` for more info - -
- -## Newly broken - -* checking Rd files ... WARNING - ``` - prepare_Rd: the condition has length > 1 and only the first element will be used - ``` - -## In both - -* checking package dependencies ... NOTE - ``` - Package which this enhances but not available for checking: ‘sp’ - ``` - -* checking Rd cross-references ... NOTE - ``` - Package unavailable to check Rd xrefs: ‘chemometrics’ - ``` - -# siland - -
- -* Version: 2.0.5 -* GitHub: NA -* Source code: https://github.com/cran/siland -* Date/Publication: 2021-01-27 20:10:03 UTC -* Number of recursive dependencies: 108 - -Run `cloud_details(, "siland")` for more info - -
- -## Newly broken - -* checking re-building of vignette outputs ... WARNING - ``` - Error(s) in re-building vignettes: - ... - --- re-building ‘siland.Rmd’ using rmarkdown - Quitting from lines 155-156 (siland.Rmd) - Error: processing vignette 'siland.Rmd' failed with diagnostics: - could not find function "discrete_range" - --- failed re-building ‘siland.Rmd’ - - SUMMARY: processing the following file failed: - ‘siland.Rmd’ - - Error: Vignette re-building failed. - Execution halted - ``` - -# TCIU - -
- -* Version: 1.2.2 -* GitHub: https://github.com/SOCR/TCIU -* Source code: https://github.com/cran/TCIU -* Date/Publication: 2023-02-27 20:02:30 UTC -* Number of recursive dependencies: 171 - -Run `cloud_details(, "TCIU")` for more info - -
- -## Newly broken - -* checking re-building of vignette outputs ... WARNING - ``` - Error(s) in re-building vignettes: - ... - --- re-building ‘tciu-LT-kimesurface.Rmd’ using rmarkdown - Quitting from lines 159-160 (tciu-LT-kimesurface.Rmd) - Error: processing vignette 'tciu-LT-kimesurface.Rmd' failed with diagnostics: - could not find function "discrete_range" - --- failed re-building ‘tciu-LT-kimesurface.Rmd’ - - --- re-building ‘tciu-fMRI-analytics.Rmd’ using rmarkdown - --- finished re-building ‘tciu-fMRI-analytics.Rmd’ - - SUMMARY: processing the following file failed: - ‘tciu-LT-kimesurface.Rmd’ - - Error: Vignette re-building failed. - Execution halted - ``` - -## In both - -* checking installed package size ... NOTE - ``` - installed size is 12.9Mb - sub-directories of 1Mb or more: - doc 11.8Mb - ``` - -# xpose +# SCORPIUS
-* Version: 0.4.15 -* GitHub: https://github.com/UUPharmacometrics/xpose -* Source code: https://github.com/cran/xpose -* Date/Publication: 2023-02-25 15:30:02 UTC -* Number of recursive dependencies: 109 +* Version: 1.0.9 +* GitHub: https://github.com/rcannood/SCORPIUS +* Source code: https://github.com/cran/SCORPIUS +* Date/Publication: 2023-08-07 17:30:05 UTC +* Number of recursive dependencies: 197 -Run `cloud_details(, "xpose")` for more info +Run `cloud_details(, "SCORPIUS")` for more info
@@ -374,20 +81,23 @@ Run `cloud_details(, "xpose")` for more info ``` Running ‘testthat.R’ Running the tests in ‘tests/testthat.R’ failed. - Last 13 lines of output: - ▆ - 1. ├─testthat::expect_error(...) at test-xpose_save.R:27:2 - 2. │ └─testthat:::quasi_capture(...) - 3. │ ├─testthat (local) .capture(...) - 4. │ │ └─base::withCallingHandlers(...) - 5. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) - 6. └─xpose::xpose_save(plot = plot, file = paths_1[3]) - 7. └─ggplot2::ggsave(...) - 8. └─ggplot2:::plot_dev(device, filename, dpi = dpi) - 9. └─cli::cli_abort(...) - 10. └─rlang::abort(...) + Complete output: + > library(SCORPIUS) + > library(dplyr) + + Attaching package: 'dplyr' + + The following objects are masked from 'package:stats': + + ... + 4. │ └─base::eval(mc, parent.frame()) + 5. └─mclust::mclustBIC(data = ``, verbose = verbose) + 6. ├─mclust::me(...) + 7. │ └─base::eval(mc, parent.frame()) + 8. │ └─base::eval(mc, parent.frame()) + 9. └─mclust::meEEE(...) - [ FAIL 1 | WARN 0 | SKIP 7 | PASS 520 ] + [ FAIL 1 | WARN 0 | SKIP 1 | PASS 182 ] Error: Test failures Execution halted ``` diff --git a/tests/testthat/test-fortify.R b/tests/testthat/test-fortify.R index 8741fac2d0..43b7adb74c 100644 --- a/tests/testthat/test-fortify.R +++ b/tests/testthat/test-fortify.R @@ -29,10 +29,14 @@ test_that("spatial polygons have correct ordering", { polys2 <- rev(polys) polys2_sp <- sp::SpatialPolygons(polys2) fake_sp2 <- sp::SpatialPolygonsDataFrame(polys2_sp, fake_data) - expected <- fortify(fake_sp2) + lifecycle::expect_deprecated( + expected <- fortify(fake_sp2) + ) expected <- expected[order(expected$id, expected$order), ] - actual <- fortify(fake_sp) + lifecycle::expect_deprecated( + actual <- fortify(fake_sp) + ) # the levels are different, so these columns need to be converted to character to compare expected$group <- as.character(expected$group) @@ -40,6 +44,11 @@ test_that("spatial polygons have correct ordering", { # Use expect_equal(ignore_attr = TRUE) to ignore rownames expect_equal(actual, expected, ignore_attr = TRUE) + + lifecycle::expect_deprecated( + # fortify() with region is defunct due to maptools' retirement + lifecycle::expect_defunct(fortify(fake_sp, region = "foo")) + ) }) test_that("fortify.default proves a helpful error with class uneval", { From 1b2c312c5474e1f84d0218b586ec6f08862f24fe Mon Sep 17 00:00:00 2001 From: Jan Gleixner Date: Sat, 21 Oct 2023 15:56:12 +0200 Subject: [PATCH 21/21] fix typo in doc (#5490) * fix typo in doc * fix typo in doc --- R/annotation.R | 2 +- man/annotate.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/annotation.R b/R/annotation.R index ca1530462b..d185cf5698 100644 --- a/R/annotation.R +++ b/R/annotation.R @@ -14,7 +14,7 @@ #' @section Unsupported geoms: #' Due to their special nature, reference line geoms [geom_abline()], #' [geom_hline()], and [geom_vline()] can't be used with [annotate()]. -#' You can use these geoms directory for annotations. +#' You can use these geoms directly for annotations. #' @param geom name of geom to use for annotation #' @param x,y,xmin,ymin,xmax,ymax,xend,yend positioning aesthetics - #' you must specify at least one of these. diff --git a/man/annotate.Rd b/man/annotate.Rd index f66a70bac7..63e29580cf 100644 --- a/man/annotate.Rd +++ b/man/annotate.Rd @@ -49,7 +49,7 @@ affect the legend. Due to their special nature, reference line geoms \code{\link[=geom_abline]{geom_abline()}}, \code{\link[=geom_hline]{geom_hline()}}, and \code{\link[=geom_vline]{geom_vline()}} can't be used with \code{\link[=annotate]{annotate()}}. -You can use these geoms directory for annotations. +You can use these geoms directly for annotations. } \examples{