#' @md
#' @title Survival Objects
#' @description
#' Wrapper for [survival::Surv].
#' @param time see [survival::Surv]
#' @param time2 see [survival::Surv]
#' @param event see [survival::Surv]
#' @param type see [survival::Surv]
#' @param origin see [survival::Surv]
#' @section Surv in survival vs. in popEpi:
#' `popEpi::Surv` is a wrapper for [survival::Surv].
#' Therefore you don't need to to do `library("survival")` when using `Surv`
#' with e.g.
#' \code{\link{survtab}}. Remember that if you do `library("survival")` after
#' `library("popEpi")`, the `Surv` from \pkg{survival} is used instead of
#' from \pkg{popEpi} (`R` throws a warning about this) when an expression
#' such as `Surv(my_times, my_events)` is evaluated. You can avoid such
#' conflicts by writing e.g. `popEpi::Surv(my_times, my_events)` instead.
#' However, `popEpi::Surv` is designed in such a way that this should not
#' become a problem and you should be able to use the two interchangeably.
#' @export
#' @family main functions
#' @family survtab functions
#' @family survmean functions
#' @importFrom survival Surv
#' @return
#' See `[survival::Surv]`.
#'
Surv <- function(
time,
time2,
event,
type = c("right", "left", "interval", "counting", "interval2", "mstate"),
origin = 0
) {
pf <- parent.frame(1)
arg_nms <- names(formals(Surv))
test_env <- environment()
is_missing <- vapply(arg_nms, function(arg_nm) {
eval(substitute(
missing(OBJ),
list(OBJ = parse(text = arg_nm)[[1]])
), envir = test_env)
}, logical(1))
pass_arg_nms <- arg_nms[!is_missing]
pass_arg_nms <- intersect(pass_arg_nms, names(formals(survival::Surv)))
pass_arg_list <- mget(pass_arg_nms)
eval_env <- as.environment(pass_arg_list)
parent.env(eval_env) <- pf
expr_args <- lapply(pass_arg_nms, function(stri) {
parse(text = stri)[[1]]
})
names(expr_args) <- pass_arg_nms
surv_expr <- as.call(c(
quote(survival::Surv),
expr_args
))
eval(surv_expr, envir = eval_env)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.