vector <- sample(55, replace = T)
x <- 50
group_cumsum <- function(nums, x) {
if (length(nums) == 0) return(NULL)
groups <- cumsum(nums) >= x
if (groups[1]) {
return(groups + c(0, group_cumsum(nums[-1], x)))
} else {
return(groups + c(rep(1, sum(!groups)), group_cumsum(nums[groups], x)))
}
}
tibble(vector, gr = group_cumsum(vector, 50)) %>% group_by(gr) %>% summarise(sum(vector), n())