Вы можете использовать Reduce
:
Reduce(c, n, accumulate=TRUE)
или, чтобы начать с первых двух элементов:
Reduce(c, tail(n,-2), n[1:2], accumulate=TRUE)
Это проще ИМХО, но не быстрее:
microbenchmark(
lapply=lapply(seq_along(n)[-1], function(i)n[seq_len(i)]),
Reduce=Reduce(c, n, accumulate=TRUE)
)
Unit: microseconds
expr min lq mean median uq max neval
lapply 10.2 10.6 22.056 10.8 11.0 1119.8 100
Reduce 10.1 10.4 10.865 10.6 10.8 17.5 100