[R] How to access results of survival analysis
Prof Brian D Ripley
ripley at stats.ox.ac.uk
Mon May 8 10:07:48 CEST 2006
The solution is to use a separate function to do this (and call it from the
print method).
On Mon, 8 May 2006, Heinz Tuechler wrote:
> At 12:55 07.05.2006 +0100, Prof Brian Ripley wrote:
>> On Sun, 7 May 2006, Heinz Tuechler wrote:
>>
>>> Hello Xiaochun Li!
>>>
>>> Thank you for submitting the function. At the time I had that problem I
>>> solved it in a somewhat different way.
>>> I changed a few lines in the print.survfit method. I introduced a parameter
>>> "ret.res=FALSE" set to false to preserve the normal behaviour of print.
>>> The second last line "invisible(x)" I changed to:
>>>
>>> if (ret.res)
>>> invisible(list(x,x1))
>>> else
>>> invisible(x)
>>>
>>> So print.survfit returned the results. Of course, Your method has the
>>> advantage to work as long as the output structure of print.survfit does not
>>> change. At the end I would prefer the original function to be changed and
>>> when I find the time I will submit a worked proposal to Thomas Lumley, the
>>> maintainer of the survival package. In that way it would be available also
>>> in future versions of survival.
>>
>> But all print() methods are required to return their first argument
>> unchanged, so
>>
>> foo
>> print(foo)
>>
>> do the same thing. See ?print.
>>
>> --
>> Brian D. Ripley, ripley at stats.ox.ac.uk
>> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
>> University of Oxford, Tel: +44 1865 272861 (self)
>> 1 South Parks Road, +44 1865 272866 (PA)
>> Oxford OX1 3TG, UK Fax: +44 1865 272595
>>
>
> I see that my proposal is against the rules.
> So what would be a correct solution? Using the (expanded) example from
> Xiaochun Li, you see that print(fit1) does not _simply_ print its first
> argument, but calculates the median and its confidence interval.
> What would be the correct way to access these values?
>
> # example:
>
> library(survival)
>
> fit1 <- survfit(Surv(time, status) ~ 1, data=aml)
> print(fit1)
>
> Call: survfit(formula = Surv(time, status) ~ 1, data = aml)
>
> n events median 0.95LCL 0.95UCL
> 23 18 27 18 45
>>
>
> smed <- function(x) {
> ox <- capture.output(print(x))
> n <- length(ox)
> tmp <- t(sapply(ox[4:n],
> function(l) strsplit(l, split=' +')[[1]]))
> nres <- strsplit(ox[3],split=' +')[[1]][2:6]
> res <- matrix(as.numeric(tmp[,2:6]), ncol=5,
> dimnames=list(tmp[,1], nres))
> res
> }
>
> sf1 <- smed(fit1)
> sf1
>
> Lacking experience in R-programming, my personal opinion is that
> calculations like the median and the confidence interval should not be only
> side effects of a print command but accessible result objects of a
> corresponding function.
>
> Heinz Tüchler
>
>
>
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595
More information about the R-help
mailing list