[R] Question about survdiff in for-loop.

Thomas Lumley tlumley at uw.edu
Sat Oct 20 00:03:35 CEST 2012


On Fri, Oct 19, 2012 at 8:02 PM, Sando <chocosando at daum.net> wrote:
>
> Hi everyone!!
>
> I have dataset composed of a numbers of survival analyses.
> ( for batch survival analyses by using for-loop) .
> Here are code !!
>
> #######
> dim(svsv)
> Num_t<-dim(svsv)
> Num<-Num_t[2]   # These are predictors !!
>
> names=colnames(svsv)
>
> for (i in 1:Num  )
> {
> name_tt=names[i]
> survdiff(Surv(survival.m, survival) ~ names[i], data=svsv)
> fit.Group<-survfit(Surv(survival.m, survival) ~ names[i] , data=svsv)
> plot(fit.Group, col=2:1, xlab="Survival", ylab="Prob")
> }
>
> #####
>
> names[i] is not working in the survdiff.

That's a problem with how formulas are parsed: you are effectively
telling survdiff() that you want names[i] as your predictor variable,
when actually you want it as the name of your predictor variable.

Using svsv[i] rather than names[i] should work.  Or you can insert the
value of names[i] into the formula with

 survdiff(eval(bquote(Surv(survival.m, survival) ~ .(names[i]))), data=svsv)

Even after you fix that, there's another problem, which is that your
code doesn't actually use the result from survdiff() in any way.

  -thomas

-- 
Thomas Lumley
Professor of Biostatistics
University of Auckland




More information about the R-help mailing list