On Dec 10, 2012, at 11:29 AM, Sam Steingold wrote:

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.

> split(vec, findInterval(seq_along(vec), breaks+.001, right=TRUE) )
$`0`
[1] 1 2 3

$`1`
[1] 4 5 6 7 8

$`2`
[1]  9 10

Needed to push the breaks slightly rightward since findInterval generally returns left-closed interval values.

--

David Winsemius
Alameda, CA, USA

______________________________________________
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.

Reply via email to