From therne@u @ending from m@yo@edu  Wed Jun 27 20:38:07 2018
From: therne@u @ending from m@yo@edu (Therneau, Terry M., Ph.D.)
Date: Wed, 27 Jun 2018 13:38:07 -0500
Subject: [Rd] new behavior of model.response
Message-ID: <bb6fa2$9mi8qn@ironport10.mayo.edu>

I am getting some unexplained changes in the latest version of survival, and finally 
traced it down to this: model.response acts differently for Surv objects.
Here is a closed form example using a made up class Durv = diagnose survival.?? I tracked 
it down by removing methods one by one from Surv; I had just added some new ones so they 
were my suspects.

test <- data.frame(time=1:8, status=rep(0:1, 4), age=60:67)
row.names(test) <- letters[1:8]

Durv <- function(...) {
 ??? temp <- cbind(...)
 ??? class(temp) <- "Durv"
 ??? temp
}
mf1 <- model.frame(Durv(time, status) ~ age, data=test)
names(model.response(mf1))
#? NULL

length.Durv <- function(x) nrow(x)
names(model.response(mf1))
#? [1] "a" "b" "c" "d" "e" "f" "g" "h" NA? NA? NA? NA? NA? NA NA? NA

The length method for Surv objects has been around for some while, this behavior is new.? 
It caused the 'time' component of survfit objects to suddenly have names and so was 
discovered in my test suite.? I had planned to submit an update today, but now need to 
delay it.

The length of the Surv (Durv) object above is 8, BTW; the fact that it's representation 
requires either 16 elements (right censored) or 24 (interval censored) is a footnote.

Terry Therneau

	[[alternative HTML version deleted]]



[Rd] new behavior of model.response
Therneau, Terry M., Ph.D.