diff --git a/R/diagnose_design.R b/R/diagnose_design.R index 3ae02dab..1c58e4b5 100644 --- a/R/diagnose_design.R +++ b/R/diagnose_design.R @@ -85,6 +85,9 @@ diagnose_design <- function(..., if (is_empty(c("estimator_label", "estimand_label") %icn% simulations_df)) { stop("Can't calculate diagnosands on this data.frame, which does not include either an estimator_label or an estimand_label. Did you send a simulations data frame?") } + if (nrow(simulations_df) == 0) { + stop("Can't calculate diagnosands on this data.frame, which has zero rows.") + } diagnosands <- diagnosands %||% attr(simulations_df, "diagnosands") %||% default_diagnosands } else { # simulate if needed ------------------------------------------------------ diff --git a/tests/testthat/test-diagnose-design.R b/tests/testthat/test-diagnose-design.R index 18fb2f42..5ee226d3 100644 --- a/tests/testthat/test-diagnose-design.R +++ b/tests/testthat/test-diagnose-design.R @@ -299,3 +299,8 @@ test_that("diagnose_design works when simulations_df lacking parameters attr", { expect_identical(d1,d2) }) + + +test_that("diagnose_design stops when a zero-row simulations_df is sent", { + expect_error(diagnose_design(data.frame(estimator_label = rep(1, 0))), "which has zero rows") +})