[R] Surv object in data.frame
Heinz Tuechler
tuechler at gmx.at
Thu Mar 16 01:31:21 CET 2006
At 09:23 15.03.2006 -0800, Thomas Lumley wrote:
>On Wed, 15 Mar 2006, Heinz Tuechler wrote:
>
>> Dear All,
>>
>> a Surv object I put in a data frame behaves somehow unexpected (see
example).
>> If I do a Cox regression on the original Surv object it works. If I put it
>> in a data.frame and do the regression on the data frame it does not work.
>> Seemingly it has to do with the class attribute, because if I change the
>> class attribute to let "Surv" appeare first, again it works.
>> Is this known? Should I have found information on it?
>
>Well, this is the sort of thing that happens when you use kludges like
>AsIs.
>
>The problem is with [.AsIs
> survobj[,1] is supposed to be a vector of times (that's what [.Surv
>returns), but [.AsIs sticks the original class attribute on to it.
>
>> str(survobj[,1])
> num [1:5] 0 0 0 0 0
>> str(I(survobj)[,1])
>Classes 'AsIs', 'Surv' num [1:5] 0 0 0 0 0
>
>The solution is not to use I() -- there's no problem with putting survival
>objects in a data frame
>> df.right<-data.frame(survobj,group)
>> df.right
> survobj group
>1 (0,1 ] 1
>2 (0,2+] 1
>3 (0,3 ] 1
>4 (0,4 ] 2
>5 (0,5 ] 2
>
>
> -thomas
Thank you, Thomas. You are right, it works, but why then I find on the help
page for Surv{survival} the following sentence:
"To include a survival object inside a data frame, use the I() function.
Surv objects are implemented as a matrix of 2 or 3 columns."
Heinz
More information about the R-help
mailing list