R split numeric vector at position
r, split, vector
Solution
An improvement would be:
splitAt <- function(x, pos) unname(split(x, cumsum(seq_along(x) %in% pos)))
which can now take a vector of positions:
splitAt(a, c(2, 4))
# [[1]]
# [1] 1
#
# [[2]]
# [1] 2 2
#
# [[3]]
# [1] 3
And it does behave properly (subjective) if `pos <= 0` or `pos >= length(x)` in the sense that it returns the whole original vector in a single list item. If you'd like it to error out instead, use `stopifnot` at the top of the function.
Problem
I am wondering about the simple task of splitting a vector into two at a certain index: ``` splitAt <- function(x, pos){ list(x[1:pos-1], x[pos:length(x)]) } a <- c(1, 2, 2, 3) > splitAt(a, 4) [[1]] [1] 1 2 2 [[2]] [1] 3 ``` My question: There must be some existing function for this, but I can't find it? Is maybe `split` a possibility? My naive implementation also does not work if `pos=0` or `pos>length(a)`.