Вот возможный маршрут. Поместите ваши векторы в список и установите их длину одинаковой. Вы можете достичь этого, добавив NA ко всем векторам, чтобы получить ту же самую длину вектора, что и максимальная. Вы можете использовать Reduce
с аргументом accumulate = TRUE
для последовательного применения функции, т.е.
l1 <- list(x, y, z)
l1 <- lapply(l1, `length<-`, max(lengths(l1)))
Reduce(`+`, l1, accumulate = TRUE)
#[[1]]
#[1] 1 2 3 45 34
#[[2]]
#[1] 3 33 34 49 NA
#[[3]]
#[1] 6 37 88 55 NA
ПРИМЕЧАНИЕ: Если ваши векторы имеют одинаковую длину, вы можете просто поместить их в список и перейти непосредственно к Reduce
, т.е. Reduce(`+`, list(x, y, z), accumulate = TRUE)