@@ -42,11 +42,32 @@ survfit2_p <- function(x, pvalue_fun = format_p, prepend_p = TRUE, rho = 0) {
4242 cli_abort(" The {.fun survfit2_p} does not support multi-state models." )
4343 }
4444
45- survival :: survdiff(
46- formula = .extract_formula_from_survfit(x ),
47- data = .extract_data_from_survfit(x ),
48- rho = rho
49- ) %> %
45+ # extract subset argument from the original survfit call
46+ call_list <- x $ call %> % as.list()
47+ subset_arg <- call_list [[" subset" ]]
48+
49+ # call survdiff with subset argument if it exists
50+ if (! is.null(subset_arg )) {
51+ # do.call to properly pass the subset argument
52+ survdiff_result <- do.call(
53+ survival :: survdiff ,
54+ list (
55+ formula = .extract_formula_from_survfit(x ),
56+ data = .extract_data_from_survfit(x ),
57+ subset = subset_arg ,
58+ rho = rho
59+ ),
60+ envir = x $ .Environment
61+ )
62+ } else {
63+ survdiff_result <- survival :: survdiff(
64+ formula = .extract_formula_from_survfit(x ),
65+ data = .extract_data_from_survfit(x ),
66+ rho = rho
67+ )
68+ }
69+
70+ survdiff_result %> %
5071 broom :: glance() %> %
5172 dplyr :: pull(" p.value" ) %> %
5273 pvalue_fun() %> %
@@ -55,4 +76,4 @@ survfit2_p <- function(x, pvalue_fun = format_p, prepend_p = TRUE, rho = 0) {
5576 prepend_p & grepl(pattern = " ^<|^>" , x = . ) ~ paste0(" p" , . ),
5677 prepend_p ~ paste0(" p=" , . )
5778 )}
58- }
79+ }
0 commit comments