On 27/04/2017 10:53 AM, sesh...@mskcc.org wrote:
Thank you Drs. Therneau and Murdoch.

"Why not use coxph.fit?" -- My use case scenario is that I needed the Cox model 
coefficients for resampled data. I was trying to reduce the computational overhead of 
coxph.fit (since it will repeated a large number of times) by stripping all the parts 
that I don't need such as sorting of the data prior to coxfit6.c call and Martingale 
residual and concordance computations after the parameters are estimated.

Under the R v3.4.0 model one cannot create any modified form of coxph.fit and expect it to work. 
Worse yet is the following where I copy "coxph.fit" to my workspace as 
"mycoxph.fit" (works initially because the environment is namespace:survival and fails 
when environment changed to R_GlobalEnv)

Under the R 3.3.1 model the problems are the same. When a change is made to the internals, your code will break. That's why your code broke.


set.seed(12345)
x <- rep(0:1, c(20,20))
y <- cbind(c(-log(runif(20)), -2*log(runif(20))), rep(1,40))
mycoxph.fit <- coxph.fit
control <- coxph.control()
oo1 <- coxph.fit(as.matrix(as.double(x)), y, NULL, NULL, NULL, control, NULL, 
"efron", NULL)
oo2 <- mycoxph.fit(as.matrix(as.double(x)), y, NULL, NULL, NULL, control, NULL, 
"efron", NULL)
all.equal(oo1, oo2)
[1] TRUE
environment(mycoxph.fit)
<environment: namespace:survival>
environment(mycoxph.fit) <- .GlobalEnv
environment(mycoxph.fit)
<environment: R_GlobalEnv>
mycoxph.fit(as.matrix(as.double(x)), y, NULL, NULL, NULL, control, NULL, 
"efron", NULL)
Error in mycoxph.fit(as.matrix(as.double(x)), y, NULL, NULL, NULL, control,  :
  object 'Ccoxfit6' not found

So the question is can a user create new functions modeled after existing 
functions os is the new model going to hinder it?

The new model actually helps in this. It offers the possibility that the run-time code will detect internal changes that break your code, rather than segfaulting when the argument list is wrong.

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to