#Input
n_col = 4
n_row = 15
offset_row = 3
basic_pattern = c(1, 1, 1, 0, 0, 0, 0, 0)
#End Input
do.call(cbind,
lapply(1:n_col, function(j){
n_zero_top = (j - 1) * (offset_row - 1)
c(rep(x = 0, times = n_zero_top),
rep(x = basic_pattern, length.out = n_row - n_zero_top))
}))
# [,1] [,2] [,3] [,4]
# [1,] 1 0 0 0
# [2,] 1 0 0 0
# [3,] 1 1 0 0
# [4,] 0 1 0 0
# [5,] 0 1 1 0
# [6,] 0 0 1 0
# [7,] 0 0 1 1
# [8,] 0 0 0 1
# [9,] 1 0 0 1
#[10,] 1 0 0 0
#[11,] 1 1 0 0
#[12,] 0 1 0 0
#[13,] 0 1 1 0
#[14,] 0 0 1 0
#[15,] 0 0 1 1
Может быть, следующее может также сработать для basic_pattern
ones = c(1, 1, 1)
#basic_pattern = c(1, 1, 1, 0, 0, 0, 0, 0)
basic_pattern = c(ones, rep(x = 0, times = (offset_row - 1) * n_col - length(ones)))