Вот опция, использующая split
f <- function(x, max = 5, n = 3) {
x <- x[x < max]
ret <- split(x, rep(1:(length(x) / n + 1), each = n)[1:length(x)])
lapply(ret, function(w) replace(rep(0, n), 1:length(w), w))
}
f(x)
#$`1`
#[1] 4 3 -2
#
#$`2`
#[1] -4 -12 0
Объяснение: Мы определяем пользовательскую функцию, которая сначала выбирает записи <5, затем разбивает результирующий вектор на куски длины 3 и сохраняет результат в<code>list и, наконец, 0-пэды тех list
элементов, которые являются векторами длины <3. </p>
Пример данных
x <- c(4,3,5,6,-2,7,-4,10,22,-12)