Hello, I am trying to return a vector from a simply by but I cannot get it working, even using simplify=TRUE. res <- data.frame(ID=c("a","a","a","b","b"),Score=c(0,1,2,0,1)) yoda <- by(res$Score,res$ID,max,simplify=T) class(yoda) [1] "by" I would like it to return a vector with the names as the ID column. The only way I could work out how to do this was result <- as.vector(yoda) names(result) <- names(yoda) result a b 2 1 Is there a better way? Thanks Dan -- ************************************************************** Daniel Brewer, Ph.D. Institute of Cancer Research Molecular Carcinogenesis Email: daniel.brewer at icr.ac.uk ************************************************************** The Institute of Cancer Research: Royal Cancer Hospital, a charitable Company Limited by Guarantee, Registered in England under Company No. 534147 with its Registered Office at 123 Old Brompton Road, London SW7 3RP. This e-mail message is confidential and for use by the a...{{dropped:2}}
If you just want that result, you can try tapply instead of by.> tapply(res$Score,res$ID,max)a b 2 1 On Mon, Nov 3, 2008 at 7:31 PM, Daniel Brewer <daniel.brewer at icr.ac.uk> wrote:> Hello, > > I am trying to return a vector from a simply by but I cannot get it > working, even using simplify=TRUE. > > res <- data.frame(ID=c("a","a","a","b","b"),Score=c(0,1,2,0,1)) > yoda <- by(res$Score,res$ID,max,simplify=T) > class(yoda) > [1] "by" > > I would like it to return a vector with the names as the ID column. The > only way I could work out how to do this was > > result <- as.vector(yoda) > names(result) <- names(yoda) > result > a b > 2 1 > > Is there a better way? > > Thanks > > Dan > > -- > ************************************************************** > Daniel Brewer, Ph.D. > > Institute of Cancer Research > Molecular Carcinogenesis > Email: daniel.brewer at icr.ac.uk > ************************************************************** > > The Institute of Cancer Research: Royal Cancer Hospital, a charitable Company Limited by Guarantee, Registered in England under Company No. 534147 with its Registered Office at 123 Old Brompton Road, London SW7 3RP. > > This e-mail message is confidential and for use by the...{{dropped:19}}
Hi r-help-bounces at r-project.org napsal dne 03.11.2008 12:31:31:> Hello, > > I am trying to return a vector from a simply by but I cannot get it > working, even using simplify=TRUE. > > res <- data.frame(ID=c("a","a","a","b","b"),Score=c(0,1,2,0,1)) > yoda <- by(res$Score,res$ID,max,simplify=T) > class(yoda) > [1] "by" > > I would like it to return a vector with the names as the ID column. The > only way I could work out how to do this was > > result <- as.vector(yoda) > names(result) <- names(yoda) > result > a b > 2 1Maybe tapply? yoda <- tapply(res$Score,res$ID,max,simplify=T) Regards Petr> > Is there a better way? > > Thanks > > Dan > > -- > ************************************************************** > Daniel Brewer, Ph.D. > > Institute of Cancer Research > Molecular Carcinogenesis > Email: daniel.brewer at icr.ac.uk > ************************************************************** > > The Institute of Cancer Research: Royal Cancer Hospital, a charitableCompany> Limited by Guarantee, Registered in England under Company No. 534147with its> Registered Office at 123 Old Brompton Road, London SW7 3RP. > > This e-mail message is confidential and for use by the a...{{dropped:2}} > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.