[R] sum portions of a vector

David L Carlson dcarlson at tamu.edu
Mon Dec 10 21:07:41 CET 2012


How about?

> vec <- 1:10
> breaks <- c(3,8,10)
> g <- cut(vec, c(0, breaks))
> sums <- aggregate(vec, list(g), sum)$x
> nums <- tapply(vec, g, paste0, collapse="+")
> results <- paste0(sums, " = ", nums)
> results
[1] "6 = 1+2+3"      "30 = 4+5+6+7+8" "19 = 9+10"     
 
----------------------------------------------
David L Carlson
Associate Professor of Anthropology
Texas A&M University
College Station, TX 77843-4352


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Sam Steingold
> Sent: Monday, December 10, 2012 1:29 PM
> To: r-help at r-project.org
> Subject: [R] sum portions of a vector
> 
> How do I sum portions of a vector into another vector?
> E.g., for
> --8<---------------cut here---------------start------------->8---
> > vec <- 1:10
> > breaks <- c(3,8,10)
> --8<---------------cut here---------------end--------------->8---
> I want to get a vector of length 3 with content
> --8<---------------cut here---------------start------------->8---
> 6 = 1+2+3
> 30 = 4+5+6+7+8
> 19 = 9+10
> --8<---------------cut here---------------end--------------->8---
> Obviously, I could write a loop, but I would rather have a vectorized
> version.
> Thanks!
> 
> --
> Sam Steingold (http://sds.podval.org/) on Ubuntu 12.04 (precise) X
> 11.0.11103000
> http://www.childpsy.net/ http://palestinefacts.org http://ffii.org
> http://jihadwatch.org http://www.PetitionOnline.com/tap12009/
> One can find Holy Grail or Higgs boson, but not the second sock.
> 
> ______________________________________________
> 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.




More information about the R-help mailing list