Сначала разбейте x
на группы n
и сложите их в длинный data.frame.Аналогичным образом сложите y
, а затем rbind
эти кадры данных, упорядочите их по ind
(номер группы) и возьмите столбец values
.
fun <- function(x, y, n) {
sx <- stack(split(x, c(gl(length(x), n, length(x)))))
sy <- stack(as.list(setNames(y, seq_along(y))))
r <- rbind(sx, sy)
r[order(r$ind), "values"]
}
x <- 1:5 ; y <- c(0, 0, 0)
fun(x, y, 1)
## [1] 1 0 2 0 3 0 4 5
fun(x, y, 2)
## [1] 1 2 0 3 4 0 5 0
fun(x, y, 5)
## [1] 1 2 3 4 5 0 0 0