[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