On Mar 9, 2010, at 4:19 PM, Tim Smith wrote:
> Hi,
>
> I wanted to do the cox model using a matrix. The following lines
> illustrate what I want to do:
> --------------------------------
> dat <- matrix(rnorm(30), ncol=3,dimnames = list(1:10,letters[1:3]))
> Survival <- rexp(10)
> Status <- ifelse(runif(10) < .7, 1, 0)
> mat <- as.data.frame(cbind(dat,Survival,Status))
>
> cmod <- coxph(, mat)
> ---------------------------------
> This works fine. However, I need to change the code so that the
> column headers ( a+b+c )are passed into the coxph function on the
> fly. What string/object do I need to generate so the function works?
> I am trying:
>
> # For example
> chead <- "a+b+c"
?as.formula
Perhaps:
as.formula(paste("Surv(Survival, Status) ~", chead))
Formula arguments are not just character strings. They have additional
attributes.
> cmod <- coxph(as.formula(paste("Surv(Survival, Status) ~",
chead)),
mat)
> cmod
Call:
coxph(formula = as.formula(paste("Surv(Survival, Status) ~",
chead)), data = mat)
coef exp(coef) se(coef) z p
a -0.286 0.751 0.663 -0.431 0.67
b 0.161 1.174 0.705 0.228 0.82
c -0.330 0.719 1.307 -0.252 0.80
Likelihood ratio test=0.62 on 3 df, p=0.893 n= 10
> cmod <- coxph(Surv(Survival, Status) ~ chead, mat)
> but this gives an error since I'm passing in a string. Can I change
> chead to something so that the code works?
> many thanks.
David Winsemius, MD
West Hartford, CT