[R] Arbitrary number of covariates in a formula
David Winsemius
dwinsemius at comcast.net
Wed Aug 11 20:05:13 CEST 2010
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 [eriki at ccbr.umn.edu]
> Sent: Wednesday, August 11, 2010 12:00 PM
> To: Mendolia, Franco
> Cc: r-help at 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 at 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 at 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
More information about the R-help
mailing list