CRAN Package Check Results for Package ggsurvfit

Last updated on 2025-09-11 15:49:28 CEST.

Flavor Version Tinstall Tcheck Ttotal Status Flags
r-devel-linux-x86_64-debian-clang 1.1.0 11.01 265.14 276.15 OK
r-devel-linux-x86_64-debian-gcc 1.1.0 7.78 173.75 181.53 OK
r-devel-linux-x86_64-fedora-clang 1.1.0 351.04 ERROR
r-devel-linux-x86_64-fedora-gcc 1.1.0 342.34 ERROR
r-devel-windows-x86_64 1.1.0 13.00 230.00 243.00 OK
r-patched-linux-x86_64 1.1.0 11.34 247.44 258.78 OK
r-release-linux-x86_64 1.1.0 11.15 248.31 259.46 OK
r-release-macos-arm64 1.1.0 114.00 OK
r-release-macos-x86_64 1.1.0 245.00 OK
r-release-windows-x86_64 1.1.0 13.00 229.00 242.00 OK
r-oldrel-macos-arm64 1.1.0 113.00 OK
r-oldrel-macos-x86_64 1.1.0 168.00 OK
r-oldrel-windows-x86_64 1.1.0 17.00 306.00 323.00 OK

Check Details

Version: 1.1.0
Check: S3 generic/method consistency
Result: WARN ggplot_add: function(object, plot, ...) ggplot_add.scale_ggsurvfit: function(object, plot, object_name) ggplot_add: function(object, plot, ...) ggplot_add.add_risktable: function(object, plot, object_name) ggplot_add: function(object, plot, ...) ggplot_add.add_quantile: function(object, plot, object_name) ggplot_add: function(object, plot, ...) ggplot_add.add_risktable_strata_symbol: function(object, plot, object_name) ggplot_add: function(object, plot, ...) ggplot_add.add_pvalue: function(object, plot, object_name) ggplot_add: function(object, plot, ...) ggplot_add.add_confidence_interval: function(object, plot, object_name) ggplot_add: function(object, plot, ...) ggplot_add.add_legend_title: function(object, plot, object_name) ggplot_add: function(object, plot, ...) ggplot_add.add_censor_mark: function(object, plot, object_name) See section ‘Generic functions and methods’ in the ‘Writing R Extensions’ manual. Flavors: r-devel-linux-x86_64-fedora-clang, r-devel-linux-x86_64-fedora-gcc

Version: 1.1.0
Check: examples
Result: ERROR Running examples in ‘ggsurvfit-Ex.R’ failed The error most likely occurred in: > ### Name: add_risktable > ### Title: Add risk table > ### Aliases: add_risktable > > ### ** Examples > > p <- + survfit2(Surv(time, status) ~ sex, data = df_lung) %>% + ggsurvfit() + + add_censor_mark() + + add_confidence_interval() + + scale_ggsurvfit() > > # using the function defaults > p + add_risktable() Error in .construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", : argument "risktable_height" is missing, with no default Calls: <Anonymous> ... ggsurvfit_build -> <Anonymous> -> .construct_risktable Execution halted Flavors: r-devel-linux-x86_64-fedora-clang, r-devel-linux-x86_64-fedora-gcc

Version: 1.1.0
Check: tests
Result: ERROR Running ‘spelling.R’ Running ‘testthat.R’ [155s/248s] Running the tests in ‘tests/testthat.R’ failed. Complete output: > # This file is part of the standard setup for testthat. > # It is recommended that you do not modify it. > # > # Where should you do additional test configuration? > # Learn more about the roles of various files in: > # * https://r-pkgs.org/tests.html > # * https://testthat.r-lib.org/reference/test_package.html#special-files > > library(testthat) > library(ggsurvfit) Loading required package: ggplot2 > > test_check("ggsurvfit") Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Ignoring unknown labels: * fill : "Time from Surgery to Treatment" * linetype : "Time from Surgery to Treatment" Ignoring unknown labels: * linetype : "Time from Surgery to Treatment" Ignoring unknown labels: * linetype : "Time from Surgery to Treatment" Ignoring unknown labels: * fill : "cyl" * linetype : "cyl" ! `add_pvalue()` works with objects created with `survfit2()` or `tidycmprsk::cuminc()`. i `add_pvalue()` has been ignored. Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". ! Setting start time to -9.83572895277207. i Specify `ggsurvfit::survfit2(start.time)` to override this default. Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Saving 7 x 7 in image Saving 7 x 7 in image [ FAIL 36 | WARN 0 | SKIP 17 | PASS 204 ] ══ Skipped tests (17) ══════════════════════════════════════════════════════════ • On CRAN (17): 'test-add_censor_mark.R:15:3', 'test-add_censor_mark.R:48:3', 'test-add_censor_mark.R:63:3', 'test-add_confidence_interval.R:20:3', 'test-add_confidence_interval.R:64:3', 'test-add_confidence_interval.R:85:3', 'test-add_pvalue.R:47:3', 'test-add_quantile.R:78:3', 'test-add_quantile.R:160:3', 'test-add_quantile.R:174:3', 'test-add_quantile.R:205:3', 'test-ggcuminc.R:36:3', 'test-ggcuminc.R:63:3', 'test-ggsurvfit.R:10:3', 'test-ggsurvfit_options.R:45:3', 'test-stat_stepribbon.R:27:3', 'test-tidy_survfit.R:211:3' ══ Failed tests ════════════════════════════════════════════════════════════════ ── Failure ('test-add_risktable.R:12:3'): add_risktable() works with ggsurvfit() ── `lst_survfit2_risktable %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:12:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_survfit2_risktable %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-add_risktable.R:14:14 11. └─ggsurvfit:::print.ggsurvfit(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:19:3'): add_risktable() works with ggsurvfit() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:19:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(sf1, sf2, sf3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:23:11 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggsurvfit(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:31:3'): add_risktable() works with ggsurvfit() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:31:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(sf1, sf2, sf3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:35:11 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggsurvfit(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:43:3'): add_risktable() works with ggsurvfit() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:43:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(sf2, sf3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:45:14 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggsurvfit(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:49:3'): add_risktable() works with ggsurvfit() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:49:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(sf2, sf3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:51:14 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggsurvfit(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:63:3'): add_risktable() works with ggsurvfit() ── `print(risktable_overall1)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(print(risktable_overall1), NA) at test-add_risktable.R:63:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(risktable_overall1) 8. └─ggsurvfit:::print.ggsurvfit(risktable_overall1) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:73:3'): add_risktable() works with ggsurvfit() ── `print(risktable_overall2)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(print(risktable_overall2), NA) at test-add_risktable.R:73:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(risktable_overall2) 8. └─ggsurvfit:::print.ggsurvfit(risktable_overall2) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:90:3'): add_risktable() works with ggsurvfit() ── `print(risktable_with_weights)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(print(risktable_with_weights), NA) at test-add_risktable.R:90:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(risktable_with_weights) 8. └─ggsurvfit:::print.ggsurvfit(risktable_with_weights) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:98:3'): add_risktable() works with ggsurvfit() ── `print(`sf1-risktable-height`)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(print(`sf1-risktable-height`), NA) at test-add_risktable.R:98:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(`sf1-risktable-height`) 8. └─ggsurvfit:::print.ggsurvfit(`sf1-risktable-height`) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:103:3'): add_risktable() works with ggsurvfit() ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger("sf1-risktable", lst_survfit2_risktable[[1]]) at test-add_risktable.R:103:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:143:3'): add_risktable() works with ggcuminc() ── `lst_cuminc_risktable %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:143:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_cuminc_risktable %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-add_risktable.R:145:14 11. └─ggsurvfit:::print.ggcuminc(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:149:3'): add_risktable() works with ggcuminc() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:149:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(cuminc1, cuminc2, cuminc3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:153:11 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggcuminc(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:161:3'): add_risktable() works with ggcuminc() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:161:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(cuminc2, cuminc3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:163:14 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggcuminc(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:167:3'): add_risktable() works with ggcuminc() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:167:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(cuminc2, cuminc3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─(ggcuminc(x) + add_risktable(combine_groups = TRUE)) %>% ... at test-add_risktable.R:169:14 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggcuminc(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:174:3'): add_risktable() works with ggcuminc() ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger("cuminc1-risktable", lst_cuminc_risktable[[1]]) at test-add_risktable.R:174:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggcuminc(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:186:3'): add_risktable() works with ggcuminc() and multiple outcomes ── `lst_cuminc_risktable_outcomes %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:186:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_cuminc_risktable_outcomes %>% ... 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-add_risktable.R:187:46 11. └─ggsurvfit:::print.ggcuminc(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:193:3'): add_risktable() works with ggcuminc() and multiple outcomes ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger(...) at test-add_risktable.R:193:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggcuminc(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:208:3'): add_risktable() throws messages ─────── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. ├─testthat::expect_message(...) at test-add_risktable.R:208:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(...) 8. └─ggsurvfit:::print.ggsurvfit(...) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:237:3'): add_risktable() custom stats ──────── `lst_custom_stats %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:237:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_custom_stats %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-add_risktable.R:237:44 11. └─ggsurvfit:::print.ggsurvfit(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:253:3'): add_risktable() custom stats ──────── `lst_custom_stats2 %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:253:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_custom_stats2 %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-add_risktable.R:253:45 11. └─ggsurvfit:::print.ggsurvfit(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:257:3'): add_risktable() custom stats ────────── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk} ({cum.event})", "{round(estimate*100)}% ({round(conf.low*100)}, {round(conf.high*100)})" ), geom_blank.stats_label = c("At Risk (Cum. Events)", "Survival (95% CI)" ), geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list( structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger(...) at test-add_risktable.R:257:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:273:3'): add_risktable() works with Cox models ── `(ggsurvfit(sf_cox) + add_risktable()) %>% ggsurvfit_build()` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:273:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─(ggsurvfit(sf_cox) + add_risktable()) %>% ggsurvfit_build() 8. └─ggsurvfit::ggsurvfit_build(.) 9. ├─rlang::inject(...) 10. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:319:3'): add_risktable() works with ggsurvfit() `start.time` and negative times ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger("sf-negative_time", sf_negative_time) at test-add_risktable.R:319:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable_strata_symbol.R:10:3'): add_risktable_strata_symbol() works ── `(p + add_risktable_strata_symbol(symbol = "O")) %>% ggsurvfit_build()` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable_strata_symbol.R:10:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─(p + add_risktable_strata_symbol(symbol = "O")) %>% ... 8. └─ggsurvfit::ggsurvfit_build(.) 9. ├─rlang::inject(...) 10. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable_strata_symbol.R:14:3'): add_risktable_strata_symbol() works ── `(p + add_risktable_strata_symbol(symbol = "O")) %>% ggsurvfit_build()` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable_strata_symbol.R:14:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─(p + add_risktable_strata_symbol(symbol = "O")) %>% ... 8. └─ggsurvfit::ggsurvfit_build(.) 9. ├─rlang::inject(...) 10. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable_strata_symbol.R:32:3'): add_risktable_strata_symbol() works ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "risktable_stats", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger(...) at test-add_risktable_strata_symbol.R:32:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable_strata_symbol.R:56:3'): add_risktable_strata_symbol() messaging works ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. ├─testthat::expect_message(...) at test-add_risktable_strata_symbol.R:56:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(...) 8. └─ggsurvfit:::print.ggsurvfit(...) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-ggsurvfit.R:193:3'): ggsurvfit() works with geoms with new data ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "risktable_stats", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger("sf2-ggsurvfit_new_data_geom1", p1) at test-ggsurvfit.R:193:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-ggsurvfit_build.R:7:3'): ggsurvfit_build() works ───────────── `built_p <- ggsurvfit_build(p, combine_plots = FALSE)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-ggsurvfit_build.R:7:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. └─ggsurvfit::ggsurvfit_build(p, combine_plots = FALSE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-ggsurvfit_build.R:12:3'): ggsurvfit_build() works ────────────── Error in `eval(code, test_env)`: object 'built_p' not found Backtrace: ▆ 1. ├─testthat::expect_true(inherits(built_p, "list")) at test-ggsurvfit_build.R:12:3 2. │ └─testthat::quasi_label(enquo(object), label, arg = "object") 3. │ └─rlang::eval_bare(expr, quo_get_env(quo)) 4. └─base::inherits(built_p, "list") ── Failure ('test-grid.draw_ggsurvfit.R:8:3'): grid.draw() works ─────────────── `save_image_png(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-grid.draw_ggsurvfit.R:8:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─ggsurvfit (local) save_image_png(...) 8. │ └─ggplot2::ggsave(filename = path, plot = x) at test-grid.draw_ggsurvfit.R:4:5 9. │ └─base::lapply(plot, grid.draw) 10. │ ├─grid (local) FUN(X[[i]], ...) 11. │ └─ggsurvfit:::grid.draw.ggsurvfit(X[[i]], ...) 12. │ ├─ggsurvfit_build(x, combine_plots = TRUE) %>% ... 13. │ └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. │ ├─rlang::inject(...) 15. │ └─ggsurvfit:::.construct_risktable(...) 16. └─grid::grid.draw(., recording = recording) ── Failure ('test-grid.draw_ggsurvfit.R:17:3'): grid.draw() works ────────────── `save_image_png(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-grid.draw_ggsurvfit.R:17:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─ggsurvfit (local) save_image_png(...) 8. │ └─ggplot2::ggsave(filename = path, plot = x) at test-grid.draw_ggsurvfit.R:4:5 9. │ └─base::lapply(plot, grid.draw) 10. │ ├─grid (local) FUN(X[[i]], ...) 11. │ └─ggsurvfit:::grid.draw.ggcuminc(X[[i]], ...) 12. │ ├─ggsurvfit_build(x, combine_plots = TRUE) %>% ... 13. │ └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. │ ├─rlang::inject(...) 15. │ └─ggsurvfit:::.construct_risktable(...) 16. └─grid::grid.draw(., recording = recording) ── Failure ('test-theme_risktable.R:12:3'): theme_risktable works ────────────── `lst_survfit2_default %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-theme_risktable.R:12:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_survfit2_default %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-theme_risktable.R:12:48 11. └─ggsurvfit:::print.ggsurvfit(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-theme_risktable.R:21:3'): theme_risktable works ────────────── `lst_survfit2_boxed %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-theme_risktable.R:21:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_survfit2_boxed %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-theme_risktable.R:21:46 11. └─ggsurvfit:::print.ggsurvfit(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-theme_risktable.R:29:3'): theme_risktable works ────────────── `lst_survfit2_boxed_symbol %>% lapply(function(x) ggsurvfit_build(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-theme_risktable.R:29:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_survfit2_boxed_symbol %>% ... 8. └─base::lapply(., function(x) ggsurvfit_build(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. └─ggsurvfit::ggsurvfit_build(x) at test-theme_risktable.R:29:53 11. ├─rlang::inject(...) 12. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-theme_risktable.R:33:3'): theme_risktable works ──────────────── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger(...) at test-theme_risktable.R:33:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) [ FAIL 36 | WARN 0 | SKIP 17 | PASS 204 ] Deleting unused snapshots: • add_censor_mark/cuminc2-censor-mark-all-outcomes.svg • add_censor_mark/cuminc2-censor-mark.svg • add_censor_mark/cuminc3-censor-mark-all-outcomes.svg • add_censor_mark/cuminc3-censor-mark.svg • add_censor_mark/sf2-censor-mark.svg • add_censor_mark/sf3-censor-mark.svg • add_confidence_interval/cuminc2-confidence-interval-all-outcomes.svg • add_confidence_interval/cuminc2-confidence-interval.svg • add_confidence_interval/cuminc3-confidence-interval-all-outcomes.svg • add_confidence_interval/cuminc3-confidence-interval.svg • add_confidence_interval/sf2-confidence-interval.svg • add_confidence_interval/sf3-confidence-interval.svg • add_pvalue/cuminc2-pvalue.svg • add_pvalue/sf2-pvalue-annotation-risk.svg • add_pvalue/sf2-pvalue-annotation.svg • add_pvalue/sf2-pvalue-with-survfit.svg • add_quantile/cuminc2-quantile-all-outcomes.svg • add_quantile/cuminc2-quantile.svg • add_quantile/cuminc3-quantile-all-outcomes.svg • add_quantile/cuminc3-quantile.svg • add_quantile/sf-mtcars-decreasing-many-quantiles.svg • add_quantile/sf-mtcars-decreasing.svg • add_quantile/sf-mtcars-increasing-many-quantiles.svg • add_quantile/sf-mtcars-increasing.svg • add_quantile/sf-mtcars-timing.svg • add_quantile/sf2-colon-quantile-no-line.svg • add_quantile/sf2-colon-quantile.svg • add_quantile/sf2-quantile-x-value-not-all-groups.svg • add_quantile/sf2-quantile-x-value-out-of-bounds.svg • add_quantile/sf2-quantile.svg • add_quantile/sf3-quantile.svg • add_risktable/add-risktable-overall1.svg • add_risktable/add-risktable-overall2.svg • add_risktable/add-risktable-weights.svg • add_risktable/cuminc2-risktable-all-outcomes.svg • add_risktable/cuminc2-risktable.svg • add_risktable/cuminc3-risktable-all-outcomes.svg • add_risktable/cuminc3-risktable.svg • add_risktable/sf-start-time.svg • add_risktable/sf1-risktable-custom-stats-and-label2.svg • add_risktable/sf1-risktable-height.svg • add_risktable/sf2-risktable-custom-stats-and-label.svg • add_risktable/sf2-risktable-custom-stats-and-label2.svg • add_risktable/sf2-risktable.svg • add_risktable/sf3-risktable-custom-stats-and-label.svg • add_risktable/sf3-risktable-custom-stats-and-label2.svg • add_risktable/sf3-risktable.svg • add_risktable_strata_symbol/add-risktable-strata-symbol-circle.svg • add_risktable_strata_symbol/add-risktable-strata-symbol-uni.svg • ggcuminc/cuminc1-ggcuminc-sf-all-outcomes.svg • ggcuminc/cuminc1-ggcuminc.svg • ggcuminc/cuminc2-ggcuminc-all-outcomes.svg • ggcuminc/cuminc2-ggcuminc-sf-all-outcomes.svg • ggcuminc/cuminc2-ggcuminc.svg • ggcuminc/cuminc3-ggcuminc-all-outcomes.svg • ggcuminc/cuminc3-ggcuminc-sf-all-outcomes.svg • ggcuminc/cuminc3-ggcuminc.svg • ggcuminc/sf-cuminc2-ggcuminc.svg • ggcuminc/sf-cuminc3-ggcuminc.svg • ggsurvfit/sf1-ggsurvfit-cloglog.svg • ggsurvfit/sf1-ggsurvfit-cumhaz.svg • ggsurvfit/sf1-ggsurvfit-custom.svg • ggsurvfit/sf1-ggsurvfit-kmunicate.svg • ggsurvfit/sf1-ggsurvfit-risk.svg • ggsurvfit/sf2-ggsurvfit-cloglog.svg • ggsurvfit/sf2-ggsurvfit-cumhaz.svg • ggsurvfit/sf2-ggsurvfit-custom.svg • ggsurvfit/sf2-ggsurvfit-kmunicate.svg • ggsurvfit/sf2-ggsurvfit-linetype.svg • ggsurvfit/sf2-ggsurvfit-new-data-geom2.svg • ggsurvfit/sf2-ggsurvfit-risk.svg • ggsurvfit/sf2-ggsurvfit-strata-transformation.svg • ggsurvfit/sf2-ggsurvfit.svg • ggsurvfit/sf3-ggsurvfit-cloglog.svg • ggsurvfit/sf3-ggsurvfit-cumhaz.svg • ggsurvfit/sf3-ggsurvfit-custom.svg • ggsurvfit/sf3-ggsurvfit-kmunicate.svg • ggsurvfit/sf3-ggsurvfit-linetype.svg • ggsurvfit/sf3-ggsurvfit-risk.svg • ggsurvfit/sf3-ggsurvfit.svg • ggsurvfit_options/ggci-outcomes-linetype.svg • ggsurvfit_options/ggci-outcomes.svg • ggsurvfit_options/ggci-strata.svg • stat_stepribbon/gg-stepribbon2.svg • theme_risktable/sf1-ggsurvfit-theme-risktable-boxed-symbol.svg • theme_risktable/sf1-ggsurvfit-theme-risktable-boxed.svg • theme_risktable/sf2-ggsurvfit-theme-risktable-boxed-symbol.svg • theme_risktable/sf2-ggsurvfit-theme-risktable-boxed.svg • theme_risktable/sf2-ggsurvfit-theme-risktable-default.svg • theme_risktable/sf3-ggsurvfit-theme-risktable-boxed-symbol.svg • theme_risktable/sf3-ggsurvfit-theme-risktable-boxed.svg • theme_risktable/sf3-ggsurvfit-theme-risktable-default.svg Error: Test failures Execution halted Flavor: r-devel-linux-x86_64-fedora-clang

Version: 1.1.0
Check: re-building of vignette outputs
Result: ERROR Error(s) in re-building vignettes: --- re-building ‘themes.Rmd’ using rmarkdown Quitting from themes.Rmd:61-68 [unnamed-chunk-4] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ <error/rlang_error> Error in `.construct_risktable()`: ! argument "risktable_height" is missing, with no default --- Backtrace: ▆ 1. └─tools::buildVignettes(...) 2. ├─base::tryCatch(...) 3. │ └─base (local) tryCatchList(expr, classes, parentenv, handlers) 4. │ └─base (local) tryCatchOne(expr, names, parentenv, handlers[[1L]]) 5. │ └─base (local) doTryCatch(return(expr), name, parentenv, handler) 6. └─engine$weave(file, quiet = quiet, encoding = enc) 7. └─knitr:::vweave_rmarkdown(...) 8. └─rmarkdown::render(...) 9. └─knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet) 10. └─knitr:::process_file(text, output) 11. ├─xfun:::handle_error(...) 12. ├─base::withCallingHandlers(...) 13. └─knitr:::process_group(group) 14. └─knitr:::call_block(x) 15. └─knitr:::block_exec(params) 16. └─knitr:::eng_r(options) 17. ├─knitr:::in_input_dir(...) 18. │ └─knitr:::in_dir(input_dir(), expr) 19. └─knitr (local) evaluate(...) 20. └─evaluate::evaluate(...) 21. ├─base::withRestarts(...) 22. │ └─base (local) withRestartList(expr, restarts) 23. │ ├─base (local) withOneRestart(withRestartList(expr, restarts[-nr]), restarts[[nr]]) 24. │ │ └─base (local) doWithOneRestart(return(expr), restart) 25. │ └─base (local) withRestartList(expr, restarts[-nr]) 26. │ └─base (local) withOneRestart(expr, restarts[[1L]]) 27. │ └─base (local) doWithOneRestart(return(expr), restart) 28. ├─evaluate:::with_handlers(...) 29. │ ├─base::eval(call) 30. │ │ └─base::eval(call) 31. │ └─base::withCallingHandlers(...) 32. └─watcher$print_value(ev$value, ev$visible, envir) 33. ├─base::withVisible(handle_value(handler, value, visible, envir)) 34. └─evaluate:::handle_value(handler, value, visible, envir) 35. └─handler$value(value, visible) 36. └─knitr (local) fun(x, options = options) 37. ├─base::withVisible(knit_print(x, ...)) 38. ├─knitr::knit_print(x, ...) 39. └─knitr:::knit_print.default(x, ...) 40. └─knitr::normal_print(x) 41. ├─base::print(x) 42. └─ggsurvfit:::print.ggsurvfit(x) 43. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 44. ├─rlang::inject(...) 45. └─ggsurvfit:::.construct_risktable(...) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Error: processing vignette 'themes.Rmd' failed with diagnostics: argument "risktable_height" is missing, with no default --- failed re-building ‘themes.Rmd’ SUMMARY: processing the following file failed: ‘themes.Rmd’ Error: Vignette re-building failed. Execution halted Flavors: r-devel-linux-x86_64-fedora-clang, r-devel-linux-x86_64-fedora-gcc

Version: 1.1.0
Check: tests
Result: ERROR Running ‘spelling.R’ Running ‘testthat.R’ [145s/192s] Running the tests in ‘tests/testthat.R’ failed. Complete output: > # This file is part of the standard setup for testthat. > # It is recommended that you do not modify it. > # > # Where should you do additional test configuration? > # Learn more about the roles of various files in: > # * https://r-pkgs.org/tests.html > # * https://testthat.r-lib.org/reference/test_package.html#special-files > > library(testthat) > library(ggsurvfit) Loading required package: ggplot2 > > test_check("ggsurvfit") Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Ignoring unknown labels: * fill : "Time from Surgery to Treatment" * linetype : "Time from Surgery to Treatment" Ignoring unknown labels: * linetype : "Time from Surgery to Treatment" Ignoring unknown labels: * linetype : "Time from Surgery to Treatment" Ignoring unknown labels: * fill : "cyl" * linetype : "cyl" ! `add_pvalue()` works with objects created with `survfit2()` or `tidycmprsk::cuminc()`. i `add_pvalue()` has been ignored. Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". ! Setting start time to -9.83572895277207. i Specify `ggsurvfit::survfit2(start.time)` to override this default. Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Plotting outcome "death from cancer". Saving 7 x 7 in image Saving 7 x 7 in image [ FAIL 36 | WARN 0 | SKIP 17 | PASS 204 ] ══ Skipped tests (17) ══════════════════════════════════════════════════════════ • On CRAN (17): 'test-add_censor_mark.R:15:3', 'test-add_censor_mark.R:48:3', 'test-add_censor_mark.R:63:3', 'test-add_confidence_interval.R:20:3', 'test-add_confidence_interval.R:64:3', 'test-add_confidence_interval.R:85:3', 'test-add_pvalue.R:47:3', 'test-add_quantile.R:78:3', 'test-add_quantile.R:160:3', 'test-add_quantile.R:174:3', 'test-add_quantile.R:205:3', 'test-ggcuminc.R:36:3', 'test-ggcuminc.R:63:3', 'test-ggsurvfit.R:10:3', 'test-ggsurvfit_options.R:45:3', 'test-stat_stepribbon.R:27:3', 'test-tidy_survfit.R:211:3' ══ Failed tests ════════════════════════════════════════════════════════════════ ── Failure ('test-add_risktable.R:12:3'): add_risktable() works with ggsurvfit() ── `lst_survfit2_risktable %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:12:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_survfit2_risktable %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-add_risktable.R:14:14 11. └─ggsurvfit:::print.ggsurvfit(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:19:3'): add_risktable() works with ggsurvfit() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:19:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(sf1, sf2, sf3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:23:11 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggsurvfit(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:31:3'): add_risktable() works with ggsurvfit() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:31:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(sf1, sf2, sf3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:35:11 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggsurvfit(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:43:3'): add_risktable() works with ggsurvfit() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:43:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(sf2, sf3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:45:14 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggsurvfit(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:49:3'): add_risktable() works with ggsurvfit() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:49:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(sf2, sf3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:51:14 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggsurvfit(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:63:3'): add_risktable() works with ggsurvfit() ── `print(risktable_overall1)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(print(risktable_overall1), NA) at test-add_risktable.R:63:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(risktable_overall1) 8. └─ggsurvfit:::print.ggsurvfit(risktable_overall1) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:73:3'): add_risktable() works with ggsurvfit() ── `print(risktable_overall2)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(print(risktable_overall2), NA) at test-add_risktable.R:73:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(risktable_overall2) 8. └─ggsurvfit:::print.ggsurvfit(risktable_overall2) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:90:3'): add_risktable() works with ggsurvfit() ── `print(risktable_with_weights)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(print(risktable_with_weights), NA) at test-add_risktable.R:90:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(risktable_with_weights) 8. └─ggsurvfit:::print.ggsurvfit(risktable_with_weights) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:98:3'): add_risktable() works with ggsurvfit() ── `print(`sf1-risktable-height`)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(print(`sf1-risktable-height`), NA) at test-add_risktable.R:98:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(`sf1-risktable-height`) 8. └─ggsurvfit:::print.ggsurvfit(`sf1-risktable-height`) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:103:3'): add_risktable() works with ggsurvfit() ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger("sf1-risktable", lst_survfit2_risktable[[1]]) at test-add_risktable.R:103:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:143:3'): add_risktable() works with ggcuminc() ── `lst_cuminc_risktable %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:143:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_cuminc_risktable %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-add_risktable.R:145:14 11. └─ggsurvfit:::print.ggcuminc(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:149:3'): add_risktable() works with ggcuminc() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:149:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(cuminc1, cuminc2, cuminc3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:153:11 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggcuminc(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:161:3'): add_risktable() works with ggcuminc() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:161:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(cuminc2, cuminc3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─... %>% print() at test-add_risktable.R:163:14 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggcuminc(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:167:3'): add_risktable() works with ggcuminc() ── ``%>%`(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:167:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─list(cuminc2, cuminc3) %>% ... 8. ├─base::lapply(...) 9. │ └─ggsurvfit (local) FUN(X[[i]], ...) 10. │ └─(ggcuminc(x) + add_risktable(combine_groups = TRUE)) %>% ... at test-add_risktable.R:169:14 11. ├─base::print(.) 12. └─ggsurvfit:::print.ggcuminc(.) 13. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. ├─rlang::inject(...) 15. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:174:3'): add_risktable() works with ggcuminc() ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger("cuminc1-risktable", lst_cuminc_risktable[[1]]) at test-add_risktable.R:174:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggcuminc(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:186:3'): add_risktable() works with ggcuminc() and multiple outcomes ── `lst_cuminc_risktable_outcomes %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:186:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_cuminc_risktable_outcomes %>% ... 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-add_risktable.R:187:46 11. └─ggsurvfit:::print.ggcuminc(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:193:3'): add_risktable() works with ggcuminc() and multiple outcomes ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger(...) at test-add_risktable.R:193:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggcuminc(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:208:3'): add_risktable() throws messages ─────── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. ├─testthat::expect_message(...) at test-add_risktable.R:208:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(...) 8. └─ggsurvfit:::print.ggsurvfit(...) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:237:3'): add_risktable() custom stats ──────── `lst_custom_stats %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:237:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_custom_stats %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-add_risktable.R:237:44 11. └─ggsurvfit:::print.ggsurvfit(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:253:3'): add_risktable() custom stats ──────── `lst_custom_stats2 %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:253:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_custom_stats2 %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-add_risktable.R:253:45 11. └─ggsurvfit:::print.ggsurvfit(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:257:3'): add_risktable() custom stats ────────── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk} ({cum.event})", "{round(estimate*100)}% ({round(conf.low*100)}, {round(conf.high*100)})" ), geom_blank.stats_label = c("At Risk (Cum. Events)", "Survival (95% CI)" ), geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list( structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger(...) at test-add_risktable.R:257:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable.R:273:3'): add_risktable() works with Cox models ── `(ggsurvfit(sf_cox) + add_risktable()) %>% ggsurvfit_build()` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable.R:273:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─(ggsurvfit(sf_cox) + add_risktable()) %>% ggsurvfit_build() 8. └─ggsurvfit::ggsurvfit_build(.) 9. ├─rlang::inject(...) 10. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable.R:319:3'): add_risktable() works with ggsurvfit() `start.time` and negative times ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger("sf-negative_time", sf_negative_time) at test-add_risktable.R:319:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable_strata_symbol.R:10:3'): add_risktable_strata_symbol() works ── `(p + add_risktable_strata_symbol(symbol = "O")) %>% ggsurvfit_build()` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable_strata_symbol.R:10:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─(p + add_risktable_strata_symbol(symbol = "O")) %>% ... 8. └─ggsurvfit::ggsurvfit_build(.) 9. ├─rlang::inject(...) 10. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-add_risktable_strata_symbol.R:14:3'): add_risktable_strata_symbol() works ── `(p + add_risktable_strata_symbol(symbol = "O")) %>% ggsurvfit_build()` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-add_risktable_strata_symbol.R:14:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─(p + add_risktable_strata_symbol(symbol = "O")) %>% ... 8. └─ggsurvfit::ggsurvfit_build(.) 9. ├─rlang::inject(...) 10. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable_strata_symbol.R:32:3'): add_risktable_strata_symbol() works ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "risktable_stats", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger(...) at test-add_risktable_strata_symbol.R:32:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-add_risktable_strata_symbol.R:56:3'): add_risktable_strata_symbol() messaging works ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. ├─testthat::expect_message(...) at test-add_risktable_strata_symbol.R:56:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─base::print(...) 8. └─ggsurvfit:::print.ggsurvfit(...) 9. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 10. ├─rlang::inject(...) 11. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-ggsurvfit.R:193:3'): ggsurvfit() works with geoms with new data ── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "risktable_stats", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger("sf2-ggsurvfit_new_data_geom1", p1) at test-ggsurvfit.R:193:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-ggsurvfit_build.R:7:3'): ggsurvfit_build() works ───────────── `built_p <- ggsurvfit_build(p, combine_plots = FALSE)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-ggsurvfit_build.R:7:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. └─ggsurvfit::ggsurvfit_build(p, combine_plots = FALSE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-ggsurvfit_build.R:12:3'): ggsurvfit_build() works ────────────── Error in `eval(code, test_env)`: object 'built_p' not found Backtrace: ▆ 1. ├─testthat::expect_true(inherits(built_p, "list")) at test-ggsurvfit_build.R:12:3 2. │ └─testthat::quasi_label(enquo(object), label, arg = "object") 3. │ └─rlang::eval_bare(expr, quo_get_env(quo)) 4. └─base::inherits(built_p, "list") ── Failure ('test-grid.draw_ggsurvfit.R:8:3'): grid.draw() works ─────────────── `save_image_png(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-grid.draw_ggsurvfit.R:8:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─ggsurvfit (local) save_image_png(...) 8. │ └─ggplot2::ggsave(filename = path, plot = x) at test-grid.draw_ggsurvfit.R:4:5 9. │ └─base::lapply(plot, grid.draw) 10. │ ├─grid (local) FUN(X[[i]], ...) 11. │ └─ggsurvfit:::grid.draw.ggsurvfit(X[[i]], ...) 12. │ ├─ggsurvfit_build(x, combine_plots = TRUE) %>% ... 13. │ └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. │ ├─rlang::inject(...) 15. │ └─ggsurvfit:::.construct_risktable(...) 16. └─grid::grid.draw(., recording = recording) ── Failure ('test-grid.draw_ggsurvfit.R:17:3'): grid.draw() works ────────────── `save_image_png(...)` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-grid.draw_ggsurvfit.R:17:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─ggsurvfit (local) save_image_png(...) 8. │ └─ggplot2::ggsave(filename = path, plot = x) at test-grid.draw_ggsurvfit.R:4:5 9. │ └─base::lapply(plot, grid.draw) 10. │ ├─grid (local) FUN(X[[i]], ...) 11. │ └─ggsurvfit:::grid.draw.ggcuminc(X[[i]], ...) 12. │ ├─ggsurvfit_build(x, combine_plots = TRUE) %>% ... 13. │ └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 14. │ ├─rlang::inject(...) 15. │ └─ggsurvfit:::.construct_risktable(...) 16. └─grid::grid.draw(., recording = recording) ── Failure ('test-theme_risktable.R:12:3'): theme_risktable works ────────────── `lst_survfit2_default %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-theme_risktable.R:12:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_survfit2_default %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-theme_risktable.R:12:48 11. └─ggsurvfit:::print.ggsurvfit(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-theme_risktable.R:21:3'): theme_risktable works ────────────── `lst_survfit2_boxed %>% lapply(function(x) print(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-theme_risktable.R:21:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_survfit2_boxed %>% lapply(function(x) print(x)) 8. └─base::lapply(., function(x) print(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. ├─base::print(x) at test-theme_risktable.R:21:46 11. └─ggsurvfit:::print.ggsurvfit(x) 12. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 13. ├─rlang::inject(...) 14. └─ggsurvfit:::.construct_risktable(...) ── Failure ('test-theme_risktable.R:29:3'): theme_risktable works ────────────── `lst_survfit2_boxed_symbol %>% lapply(function(x) ggsurvfit_build(x))` threw an unexpected error. Message: argument "risktable_height" is missing, with no default Class: getvarError/missingArgError/error/condition Backtrace: ▆ 1. ├─testthat::expect_error(...) at test-theme_risktable.R:29:3 2. │ └─testthat:::expect_condition_matching(...) 3. │ └─testthat:::quasi_capture(...) 4. │ ├─testthat (local) .capture(...) 5. │ │ └─base::withCallingHandlers(...) 6. │ └─rlang::eval_bare(quo_get_expr(.quo), quo_get_env(.quo)) 7. ├─lst_survfit2_boxed_symbol %>% ... 8. └─base::lapply(., function(x) ggsurvfit_build(x)) 9. └─ggsurvfit (local) FUN(X[[i]], ...) 10. └─ggsurvfit::ggsurvfit_build(x) at test-theme_risktable.R:29:53 11. ├─rlang::inject(...) 12. └─ggsurvfit:::.construct_risktable(...) ── Error ('test-theme_risktable.R:33:3'): theme_risktable works ──────────────── <getvarError/missingArgError/error/condition> Error in `.construct_risktable(x, geom_blank.times = NULL, geom_blank.risktable_stats = c("{n.risk}", "{cum.event}"), geom_blank.stats_label = NULL, geom_blank.combine_groups = FALSE, geom_blank.risktable_group = "auto", geom_blank.risktable_height = NULL, geom_blank.theme = list(structure(list(line = <object>, rect = <object>, text = <object>, title = <object>, point = <object>, polygon = <object>, geom = <object>, spacing = structure(5.5, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), margins = structure(c(5.5, 5.5, 5.5, 5.5), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), aspect.ratio = NULL, axis.title = NULL, axis.title.x = <object>, axis.title.x.top = <object>, axis.title.x.bottom = NULL, axis.title.y = <object>, axis.title.y.left = NULL, axis.title.y.right = <object>, axis.text = <object>, axis.text.x = <object>, axis.text.x.top = <object>, axis.text.x.bottom = NULL, axis.text.y = <object>, axis.text.y.left = NULL, axis.text.y.right = <object>, axis.text.theta = NULL, axis.text.r = <object>, axis.ticks = <object>, axis.ticks.x = NULL, axis.ticks.x.top = NULL, axis.ticks.x.bottom = NULL, axis.ticks.y = NULL, axis.ticks.y.left = NULL, axis.ticks.y.right = NULL, axis.ticks.theta = NULL, axis.ticks.r = NULL, axis.minor.ticks.x.top = NULL, axis.minor.ticks.x.bottom = NULL, axis.minor.ticks.y.left = NULL, axis.minor.ticks.y.right = NULL, axis.minor.ticks.theta = NULL, axis.minor.ticks.r = NULL, axis.ticks.length = structure(0.5, class = "rel"), axis.ticks.length.x = NULL, axis.ticks.length.x.top = NULL, axis.ticks.length.x.bottom = NULL, axis.ticks.length.y = NULL, axis.ticks.length.y.left = NULL, axis.ticks.length.y.right = NULL, axis.ticks.length.theta = NULL, axis.ticks.length.r = NULL, axis.minor.ticks.length = structure(0.75, class = "rel"), axis.minor.ticks.length.x = NULL, axis.minor.ticks.length.x.top = NULL, axis.minor.ticks.length.x.bottom = NULL, axis.minor.ticks.length.y = NULL, axis.minor.ticks.length.y.left = NULL, axis.minor.ticks.length.y.right = NULL, axis.minor.ticks.length.theta = NULL, axis.minor.ticks.length.r = NULL, axis.line = <object>, axis.line.x = NULL, axis.line.x.top = NULL, axis.line.x.bottom = NULL, axis.line.y = NULL, axis.line.y.left = NULL, axis.line.y.right = NULL, axis.line.theta = NULL, axis.line.r = NULL, legend.background = <object>, legend.margin = NULL, legend.spacing = structure(2, class = "rel"), legend.spacing.x = NULL, legend.spacing.y = NULL, legend.key = NULL, legend.key.size = structure(1.2, unit = 3L, class = c("simpleUnit", "unit", "unit_v2")), legend.key.height = NULL, legend.key.width = NULL, legend.key.spacing = NULL, legend.key.spacing.x = NULL, legend.key.spacing.y = NULL, legend.key.justification = NULL, legend.frame = NULL, legend.ticks = NULL, legend.ticks.length = structure(0.2, class = "rel"), legend.axis.line = NULL, legend.text = <object>, legend.text.position = NULL, legend.title = <object>, legend.title.position = NULL, legend.position = "right", legend.position.inside = NULL, legend.direction = NULL, legend.byrow = NULL, legend.justification = "center", legend.justification.top = NULL, legend.justification.bottom = NULL, legend.justification.left = NULL, legend.justification.right = NULL, legend.justification.inside = NULL, legend.location = NULL, legend.box = NULL, legend.box.just = NULL, legend.box.margin = structure(c(0, 0, 0, 0), class = c("ggplot2::margin", "simpleUnit", "unit", "unit_v2", "S7_object"), S7_class = structure(function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, name = "margin", parent = structure(list(class = c("simpleUnit", "unit", "unit_v2"), constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (t = 0, r = 0, b = 0, l = 0, unit = "pt", ...) { warn_dots_empty() lens <- c(length(t), length(r), length(b), length(l)) if (any(lens != 1)) { incorrect <- c("t", "r", "b", "l")[lens != 1] s <- if (length(incorrect) > 1) "s" else "" cli::cli_warn(c("In {.fn margin}, the argument{s} {.and {.arg {incorrect}}} should \\\n have length 1, not length {.and {lens[lens != 1]}}.", i = "Argument{s} get(s) truncated to length 1.")) t <- t[1] r <- r[1] b <- b[1] l <- l[1] } u <- unit(c(t, r, b, l), unit) S7::new_object(u) }, class = c("S7_class", "S7_object")), unit = 8L), legend.box.background = <object>, legend.box.spacing = structure(2, class = "rel"), panel.background = <object>, panel.border = <object>, panel.spacing = NULL, panel.spacing.x = NULL, panel.spacing.y = NULL, panel.grid = <object>, panel.grid.major = NULL, panel.grid.minor = <object>, panel.grid.major.x = NULL, panel.grid.major.y = NULL, panel.grid.minor.x = NULL, panel.grid.minor.y = NULL, panel.ontop = FALSE, panel.widths = NULL, panel.heights = NULL, plot.background = <object>, plot.title = <object>, plot.title.position = "panel", plot.subtitle = <object>, plot.caption = <object>, plot.caption.position = "panel", plot.tag = <object>, plot.tag.position = "topleft", plot.tag.location = NULL, plot.margin = NULL, strip.background = <object>, strip.background.x = NULL, strip.background.y = NULL, strip.clip = "on", strip.placement = "inside", strip.text = <object>, strip.text.x = NULL, strip.text.x.bottom = NULL, strip.text.x.top = NULL, strip.text.y = <object>, strip.text.y.left = <object>, strip.text.y.right = NULL, strip.switch.pad.grid = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2")), strip.switch.pad.wrap = structure(2.75, unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = TRUE, validate = TRUE), structure(list(axis.title.x = <object>, axis.text.x = <object>, axis.text.y = <object>, axis.ticks = <object>, axis.line = <object>, legend.position = "none", panel.border = <object>, panel.grid.major = <object>, panel.grid.minor = <object>, plot.title = <object>, plot.margin = structure(c(0, 5.5, 0, 5.5), unit = 8L, class = c("simpleUnit", "unit", "unit_v2"))), class = c("theme", "ggplot2::theme", "gg", "S7_object"), S7_class = structure(function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, name = "theme", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list( complete = structure(list(name = "complete", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property"), validate = structure(list(name = "validate", class = structure(list( class = "logical", constructor_name = "logical", constructor = function (.data = logical(0)) .data, validator = function (object) { if (base_class(object) != name) { sprintf("Underlying data must be <%s> not <%s>", name, base_class(object)) } }), class = "S7_base_class"), getter = NULL, setter = NULL, validator = NULL, default = NULL), class = "S7_property")), abstract = FALSE, constructor = function (elements = list(), ..., complete = FALSE, validate = TRUE) { warn_dots_empty() S7::new_object(elements, complete = complete, validate = validate) }, class = c("S7_class", "S7_object")), complete = FALSE, validate = TRUE), structure(list(x = NULL), class = c("ggplot2::labels", "gg", "S7_object"), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object"))), structure(list( y = NULL), class = c("ggplot2::labels", "gg", "S7_object" ), S7_class = structure(function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, name = "labels", parent = structure(list(class = "gg", constructor = function (.data) { stop(sprintf("S3 class <%s> doesn't have a constructor", class[[1]]), call. = FALSE) }, validator = NULL), class = "S7_S3_class"), package = "ggplot2", properties = list(), abstract = FALSE, constructor = function (labels = list(), ...) { warn_dots_empty() S7::new_object(labels) }, validator = function (self) { if (!is.list(self)) { return("labels must be a list.") } if (!is_named2(self)) { return("every label must be named.") } dups <- unique(names(self)[duplicated(names(self))]) if (length(dups) > 0) { dups <- oxford_comma(dups, final = "and") return(paste0("labels cannot contain duplicate names (", dups, ").")) } return(NULL) }, class = c("S7_class", "S7_object")))), geom_blank.size = 3.5, combine_plots = combine_plots, risktable_symbol_args = risktable_symbol_args)`: argument "risktable_height" is missing, with no default Backtrace: ▆ 1. └─vdiffr::expect_doppelganger(...) at test-theme_risktable.R:33:3 2. └─vdiffr (local) writer(fig, testcase, title) 3. ├─vdiffr:::print_plot(plot, title) 4. └─vdiffr:::print_plot.ggplot(plot, title) 5. ├─base::print(p) 6. └─ggsurvfit:::print.ggsurvfit(p) 7. └─ggsurvfit::ggsurvfit_build(x, combine_plots = TRUE) 8. ├─rlang::inject(...) 9. └─ggsurvfit:::.construct_risktable(...) [ FAIL 36 | WARN 0 | SKIP 17 | PASS 204 ] Deleting unused snapshots: • add_censor_mark/cuminc2-censor-mark-all-outcomes.svg • add_censor_mark/cuminc2-censor-mark.svg • add_censor_mark/cuminc3-censor-mark-all-outcomes.svg • add_censor_mark/cuminc3-censor-mark.svg • add_censor_mark/sf2-censor-mark.svg • add_censor_mark/sf3-censor-mark.svg • add_confidence_interval/cuminc2-confidence-interval-all-outcomes.svg • add_confidence_interval/cuminc2-confidence-interval.svg • add_confidence_interval/cuminc3-confidence-interval-all-outcomes.svg • add_confidence_interval/cuminc3-confidence-interval.svg • add_confidence_interval/sf2-confidence-interval.svg • add_confidence_interval/sf3-confidence-interval.svg • add_pvalue/cuminc2-pvalue.svg • add_pvalue/sf2-pvalue-annotation-risk.svg • add_pvalue/sf2-pvalue-annotation.svg • add_pvalue/sf2-pvalue-with-survfit.svg • add_quantile/cuminc2-quantile-all-outcomes.svg • add_quantile/cuminc2-quantile.svg • add_quantile/cuminc3-quantile-all-outcomes.svg • add_quantile/cuminc3-quantile.svg • add_quantile/sf-mtcars-decreasing-many-quantiles.svg • add_quantile/sf-mtcars-decreasing.svg • add_quantile/sf-mtcars-increasing-many-quantiles.svg • add_quantile/sf-mtcars-increasing.svg • add_quantile/sf-mtcars-timing.svg • add_quantile/sf2-colon-quantile-no-line.svg • add_quantile/sf2-colon-quantile.svg • add_quantile/sf2-quantile-x-value-not-all-groups.svg • add_quantile/sf2-quantile-x-value-out-of-bounds.svg • add_quantile/sf2-quantile.svg • add_quantile/sf3-quantile.svg • add_risktable/add-risktable-overall1.svg • add_risktable/add-risktable-overall2.svg • add_risktable/add-risktable-weights.svg • add_risktable/cuminc2-risktable-all-outcomes.svg • add_risktable/cuminc2-risktable.svg • add_risktable/cuminc3-risktable-all-outcomes.svg • add_risktable/cuminc3-risktable.svg • add_risktable/sf-start-time.svg • add_risktable/sf1-risktable-custom-stats-and-label2.svg • add_risktable/sf1-risktable-height.svg • add_risktable/sf2-risktable-custom-stats-and-label.svg • add_risktable/sf2-risktable-custom-stats-and-label2.svg • add_risktable/sf2-risktable.svg • add_risktable/sf3-risktable-custom-stats-and-label.svg • add_risktable/sf3-risktable-custom-stats-and-label2.svg • add_risktable/sf3-risktable.svg • add_risktable_strata_symbol/add-risktable-strata-symbol-circle.svg • add_risktable_strata_symbol/add-risktable-strata-symbol-uni.svg • ggcuminc/cuminc1-ggcuminc-sf-all-outcomes.svg • ggcuminc/cuminc1-ggcuminc.svg • ggcuminc/cuminc2-ggcuminc-all-outcomes.svg • ggcuminc/cuminc2-ggcuminc-sf-all-outcomes.svg • ggcuminc/cuminc2-ggcuminc.svg • ggcuminc/cuminc3-ggcuminc-all-outcomes.svg • ggcuminc/cuminc3-ggcuminc-sf-all-outcomes.svg • ggcuminc/cuminc3-ggcuminc.svg • ggcuminc/sf-cuminc2-ggcuminc.svg • ggcuminc/sf-cuminc3-ggcuminc.svg • ggsurvfit/sf1-ggsurvfit-cloglog.svg • ggsurvfit/sf1-ggsurvfit-cumhaz.svg • ggsurvfit/sf1-ggsurvfit-custom.svg • ggsurvfit/sf1-ggsurvfit-kmunicate.svg • ggsurvfit/sf1-ggsurvfit-risk.svg • ggsurvfit/sf2-ggsurvfit-cloglog.svg • ggsurvfit/sf2-ggsurvfit-cumhaz.svg • ggsurvfit/sf2-ggsurvfit-custom.svg • ggsurvfit/sf2-ggsurvfit-kmunicate.svg • ggsurvfit/sf2-ggsurvfit-linetype.svg • ggsurvfit/sf2-ggsurvfit-new-data-geom2.svg • ggsurvfit/sf2-ggsurvfit-risk.svg • ggsurvfit/sf2-ggsurvfit-strata-transformation.svg • ggsurvfit/sf2-ggsurvfit.svg • ggsurvfit/sf3-ggsurvfit-cloglog.svg • ggsurvfit/sf3-ggsurvfit-cumhaz.svg • ggsurvfit/sf3-ggsurvfit-custom.svg • ggsurvfit/sf3-ggsurvfit-kmunicate.svg • ggsurvfit/sf3-ggsurvfit-linetype.svg • ggsurvfit/sf3-ggsurvfit-risk.svg • ggsurvfit/sf3-ggsurvfit.svg • ggsurvfit_options/ggci-outcomes-linetype.svg • ggsurvfit_options/ggci-outcomes.svg • ggsurvfit_options/ggci-strata.svg • stat_stepribbon/gg-stepribbon2.svg • theme_risktable/sf1-ggsurvfit-theme-risktable-boxed-symbol.svg • theme_risktable/sf1-ggsurvfit-theme-risktable-boxed.svg • theme_risktable/sf2-ggsurvfit-theme-risktable-boxed-symbol.svg • theme_risktable/sf2-ggsurvfit-theme-risktable-boxed.svg • theme_risktable/sf2-ggsurvfit-theme-risktable-default.svg • theme_risktable/sf3-ggsurvfit-theme-risktable-boxed-symbol.svg • theme_risktable/sf3-ggsurvfit-theme-risktable-boxed.svg • theme_risktable/sf3-ggsurvfit-theme-risktable-default.svg Error: Test failures Execution halted Flavor: r-devel-linux-x86_64-fedora-gcc