Duncan, I agree completely with "don't use attach"; if I could get all the users of the survival package to agree as well the problem in question would go away :-) I'm thinking about ways to add more effective error surveillance. Your suggestion was not horribly complex and I'll look into it further. My first foray failed because what I want (I think) is the environment that they had when the first ">" came up. I tried baseenv in a spot, but then my code couldn't find the model.frame function. Terry T.
On 05/17/2012 05:00 AM, Duncan wrote:
On 12-05-16 4:59 PM, Terry Therneau wrote:
I've been tracking down a survival problem from R-help today. A short version of the primary issue is reconstructed by the following simple example: library(survival) attach(lung) fit<- coxph(Surv(time, status) ~ log(age)) predict(fit, newdata=data.frame(abe=45)) Note the typo in the last line of "abe" instead of "age". Instead of an error message, this returns predictions for all the subjects since model.frame matches "age" by searching more widely. I'd prefer the error. I suspect this is hard -- I'd like it to not see the attached lung data set, but still be able to find the log function. Is there a not-horribly-complex solution?
The best solution is to not use attach(), use data=lung in the fit. I think if you want to use attach but limit the search, you need something like predict(fit, newdata=list2env(data.frame(abe=45), parent=baseenv())) but I don't think that meets your "not horribly complex" criterion. Duncan Murdoch
I also tried to change the primary function to lm instead of coxph. It has the same problem, but does print a warning that the newdata and results have different lengths (which I will incorporate). Terry T.