Hello,

The following function will do it.
It uses a standard cumsum trick to create a break vector f.
And predicts special cases (n = 0 or n = 1).

breakVec <- function(x, n = 5){
  if(n < 1) stop(paste("Illegal value n:", n))
  if(n == 1){
    f = ""
  }else{
    f <- c(1, rep(0, n - 1))
    f <- rep(f, length.out = length(x))
    f <- cumsum(f)
  }
  split(x, f)
}

breakVec(LETTERS)
breakVec(LETTERS, 4)
breakVec(LETTERS, 1)
breakVec(LETTERS, -1)


Hope this helps,

Rui Barradas

Às 19:01 de 18/08/19, Christofer Bogaso escreveu:
Hi,

Let say I have a vector as below

Vec = LETTERS

Now I want to break this vector into groups of the same length of 5.

So,
1st group consists - "A" "B" "C" "D" "E"
2nd group - "F" "G" "H" "I" "J"

and so on..
last group will consist only the leftover elements

I have a very large initial vector, so looking for some efficient way
to achieve the same. Any pointer will be highly appreciated.

Thanks for your time.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.


______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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