specials and ::
One could define a function that removes all instances of 'survival::' from
an expression, returning the fixed up expression, and applying it to all
formulae given as arguments to your survival functions. E.g.,
removeDoubleColonSurvival <- function (formula)
{
doubleColon <- as.name("::")
survival <- as.name("survival")
fix <- function(expr) {
if (is.call(expr) && identical(expr[[1]], doubleColon) &&
identical(expr[[2]], survival)){
expr <- expr[[3]]
} else if (is.call(expr)) {
for(i in seq_along(expr)){
expr[[i]] <- fix(expr[[i]])
}
}
expr
}
fix(formula)
}
identical(f(y ~ f(x) + survival::g(x,10) + z),
y ~ f(x) + g(x,10) + z)
# [1] TRUE
-Bill
On Mon, Aug 26, 2024 at 7:42?AM Therneau, Terry M., Ph.D. via R-devel <
r-devel at r-project.org> wrote:
The survival package makes significant use of the "specials" argument of
terms(), before
calling model.frame; it is part of nearly every modeling function. The
reason is that
strata argments simply have to be handled differently than other things on
the right hand
side. Likewise for tt() and cluster(), though those are much less frequent.
I now get "bug reports" from the growing segment that believes one should
put
packagename:: in front of every single instance. For instance
fit <- survival::survdiff( survival::Surv(time, status) ~ ph.karno
+
survival::strata(inst), data= survival::lung)
This fails to give the correct answer because it fools terms(formula,
specials=
"strata"). I've stood firm in my response of "that's your bug, not
mine", but I begin
to believe I am swimming uphill. One person responded that it was
company policy to
qualify everything.
I don't see an easy way to fix survival, and even if I did it would be a
tremendous amout
of work. What are other's thoughts?
Terry
--
Terry M Therneau, PhD
Department of Quantitative Health Sciences
Mayo Clinic
therneau at mayo.edu
"TERR-ree THUR-noh"
[[alternative HTML version deleted]]
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel