I'm sorry for not clearer describing my motive with this-- So this is what I'm trying to do- Take a survival object and utilize it in ggplot.
ggkm<-function(time,event,stratum) { m2s<-Surv(time,as.numeric(event)) fit <- survfit(m2s ~ stratum) f$time<-fit$time f$surv<-fit$surv f$strata<-c(rep(names(fit$strata[1]),fit$strata[1]),rep(names(fit$strata[2]),fit$strata[2])) f$upper<-fit$upper f$lower<-fit$lower r<-ggplot (f,aes(x=time,y=surv,fill=strata,group=strata))+geom_line()+geom_ribbon(aes(ymin=lower,ymax=upper),alpha=0.3) return(r) } My problem is that I can have more than two strata, and I would like the function to automatically detect the number of strata. Hence a quick hack as to how I can create f$strata when I dont know the number of strata would be appreciated. The paste("rep(names(fit$strata[",1:length(fit$strata),"]),fit$strata[",1:length(fit$strata),"])",sep="") is as close as I get. However this results in multiple strings and I havent discovered yet how I can pass this so f$strata is created. This could easily be done in stata appending to a macro, but as I am a recent convertee I dont know how to do this in R. (yet...?) Regards, //M On Mon, Jun 7, 2010 at 2:50 AM, Joris Meys <jorism...@gmail.com> wrote: > Wild guess, but it looks like you are looking at : > >> ts <- list(a=1:5) >> names(ts$a) <- letters[1:5] >> v<-paste("rep(names(ts$a[",1:b,"]),ts$a[",1:b,"])",sep="") >> >> sapply(v,function(x){eval(parse(,text=x))}) > $`rep(names(ts$a[1]),ts$a[1])` > [1] "a" > > $`rep(names(ts$a[2]),ts$a[2])` > [1] "b" "b" > > $`rep(names(ts$a[3]),ts$a[3])` > [1] "c" "c" "c" > > $`rep(names(ts$a[4]),ts$a[4])` > [1] "d" "d" "d" "d" > > $`rep(names(ts$a[5]),ts$a[5])` > [1] "e" "e" "e" "e" "e" > >> assign("test",eval(parse(text=v[3]))) >> test > [1] "c" "c" "c" >> > > Cheers > Joris > > On Sun, Jun 6, 2010 at 9:51 PM, moleps <mole...@gmail.com> wrote: >> Dear r-listers, >> >> I need to pass a string to a function. However the length of the string is >> dependent on the length of a vector. >> >> >> b<-length(h) >> v<-paste("rep(names(ts$a[",1:b,"]),ts$a[",1:b,"])",sep="") >> >> >> Is it possible somehow to pass this as an argument to a function later on ? >> >> >> >> Regards, >> >> //M >> >> ______________________________________________ >> 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. >> > > > > -- > Ghent University > Faculty of Bioscience Engineering > Department of Applied mathematics, biometrics and process control > > tel : +32 9 264 59 87 > joris.m...@ugent.be > ------------------------------- > Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php > ______________________________________________ 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.