On Aug 11, 2010, at 1:53 PM, Mendolia, Franco wrote:


I could do that. However, the function f that I mentioned below is part of a bigger program and is nested inside another function, say function A. In function A I determine the covariates that I want to use and then call my function f. So even if I use a formula as single argument, I would still need to construct the formula with the arbitrary number of covariates which then leads to my original problem.

Your original example does not lend itself well to testing a demonstration but you can make a formula along these lines;

form <- formula(paste("Surv(", time, event, ") ~",
                       paste(covar, collapse="+"),
                       "+strata(", stratum, ")",
                       sep=" ") ) )
coxph(form, data=dfrm)

I'm not claiming it will work properly with attach()ed dataframes. I consider the attach function (at least as used with data objects) to be a device of the Devil.

--
David.

________________________________________
From: Erik Iverson [er...@ccbr.umn.edu]
Sent: Wednesday, August 11, 2010 12:00 PM
To: Mendolia, Franco
Cc: r-help@r-project.org
Subject: Re: [R] Arbitrary number of covariates in a formula

Are you for some reason against writing your function to accept a single
argument, a formula, that you simply pass on to coxph?

Mendolia, Franco wrote:
Hello!

I have something like this:

test1 <- data.frame(intx=c(4,3,1,1,2,2,3),
                  status=c(1,1,1,0,1,1,0),
                  x1=c(0,2,1,1,1,0,0),
                  x2=c(1,1,0,0,2,2,0),
                  sex=c(0,0,0,0,1,1,1))

and I can easily fit a cox model:

library(survival)
coxph(Surv(intx,status) ~ x1 + x2 + strata(sex),test1)

However, I want to write my own function, fit the model inside this function and then do some further computations.

f <- function(time, event, stratum, covar )
{

fit <- coxph(Surv(time,event) ~ covar[[1]] + covar[[2]] + strata(stratum))
 fit
 #... do some other stuff
}

attach(test1)
f(intx, status, sex, list(x1,x2))

This works fine when I have exactly two covariates. However, I would like to have something that I can use with an arbitrary number of covariates. More precisely, I need something more general than covar[[1]] + covar[[2]].

Any ideas?

Thanks,
Franco
______________________________________________
R-help@r-project.org mailing list
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.

______________________________________________
R-help@r-project.org mailing list
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.

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
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