diff --git a/DESCRIPTION b/DESCRIPTION index ca21590c..02de5e3e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: simtrial Type: Package Title: Clinical Trial Simulation -Version: 0.3.2.10 +Version: 0.3.2.11 Authors@R: c( person("Keaven", "Anderson", email = "keaven_anderson@merck.com", role = c("aut")), person("Yilong", "Zhang", email = "elong0527@gmail.com", role = c("aut")), diff --git a/NAMESPACE b/NAMESPACE index 4f6b6de3..c818fb50 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -20,6 +20,7 @@ export(multitest) export(pvalue_maxcombo) export(randomize_by_fixed_block) export(rmst) +export(rmst.formula) export(rpwexp) export(rpwexp_enroll) export(sim_fixed_n) diff --git a/R/rmst.R b/R/rmst.R index 8e4cfb86..7e37dd7a 100644 --- a/R/rmst.R +++ b/R/rmst.R @@ -299,3 +299,26 @@ rmst_single_arm <- function( return(ans) } + +#' @export +rmst.formula <- function(formula, data, tau = 10, reference = "control", + alpha = 0.05) { + stopifnot(is.data.frame(data)) + + variables <- colnames(stats::get_all_vars(formula = formula, data = data)) + if (length(variables) != 3) { + stop("The formula interface requires exactly 3 variables specified") + } + + ans <- rmst( + data = data, + tau = tau, + var_label_tte = variables[1], + var_label_event = variables[2], + var_label_group = variables[3], + reference = reference, + alpha = alpha + ) + + return(ans) +} diff --git a/tests/testthat/test-unvalidated-rmst.R b/tests/testthat/test-unvalidated-rmst.R new file mode 100644 index 00000000..1a199d0f --- /dev/null +++ b/tests/testthat/test-unvalidated-rmst.R @@ -0,0 +1,47 @@ +test_that("rmst() snapshot test", { + data(ex1_delayed_effect) + observed <- rmst( + data = ex1_delayed_effect, + var_label_tte = "month", + var_label_event = "evntd", + var_label_group = "trt", + tau = 10, + reference = "0" + ) + expected <- data.frame( + rmst_arm1 = 6.495175253205431, + rmst_arm0 = 5.630125973237457, + rmst_diff = 0.8650492799679741, + z = 2.2178796367487963 + ) + expect_equal(observed, expected) +}) + +test_that("formula method matches default method", { + data(ex1_delayed_effect) + + rmst_default <- rmst( + data = ex1_delayed_effect, + var_label_tte = "month", + var_label_event = "evntd", + var_label_group = "trt", + tau = 10, + reference = "0" + ) + + rmst_formula_1 <- rmst.formula( + month ~ evntd + trt, + data = ex1_delayed_effect, + tau = 10, + reference = "0" + ) + expect_equal(rmst_formula_1, rmst_default) + + rmst_formula_2 <- rmst.formula( + survival::Surv(month | evntd) ~ trt, + data = ex1_delayed_effect, + tau = 10, + reference = "0" + ) + expect_equal(rmst_formula_2, rmst_default) +})