suppose covnames is a vector containing your covariate names (e.g. as character strings)
Then (warning: untested) rhs <- paste(covnames, collapse="+") ## makes them into a single string separated by "+"-es and form <- formula(paste("y", rhs, sep="~")) ## creates your formula. ?substitute can also be useful for this. -- Bert Gunter Genentech Nonclinical Biostatistics On Wed, Aug 11, 2010 at 10:53 AM, Mendolia, Franco <fmendo...@mcw.edu> 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. > > ________________________________________ > 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. > ______________________________________________ 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.