[R] Chopping a vector up into smaller vectors

Stephen Eglen S.J.Eglen at damtp.cam.ac.uk
Thu Aug 2 12:29:31 CEST 2012


Anyone got a neat way to chop a vector up into smaller subvectors?
This is what I have now, which seems inelegant:

chop <- function(v, counts) {
  stopifnot(sum(counts)==length(v))
  end <- cumsum(counts)
  beg <- c(1, 1+end[-length(end)])
  begend <- cbind(beg, end)
  apply(begend, 1, function(x) v[x[1]:x[2]])
}
  

> chop(9:1, c(3,2,4))
[[1]]
[1] 9 8 7

[[2]]
[1] 6 5

[[3]]
[1] 4 3 2 1



More information about the R-help mailing list