Another way to write your function is using expand.grid over l lists of sequences of length l.
f <- \(l) do.call(paste,
cbind(expand.grid(replicate(l - 1, seq.int(l), simplify=FALSE)),
sep=', '))
f(3)
# [1] "1, 1" "2, 1" "3, 1" "1, 2" "2, 2" "3, 2" "1, 3" "2, 3" "3, 3"
f(4)
# [1] "1, 1, 1" "2, 1, 1" "3, 1, 1" "4, 1, 1" "1, 2, 1" "2, 2, 1" "3, 2, 1"
# [8] "4, 2, 1" "1, 3, 1" "2, 3, 1" "3, 3, 1" "4, 3, 1" "1, 4, 1" "2, 4, 1"
# [15] "3, 4, 1" "4, 4, 1" "1, 1, 2" "2, 1, 2" "3, 1, 2" "4, 1, 2" "1, 2, 2"
# [22] "2, 2, 2" "3, 2, 2" "4, 2, 2" "1, 3, 2" "2, 3, 2" "3, 3, 2" "4, 3, 2"
# [29] "1, 4, 2" "2, 4, 2" "3, 4, 2" "4, 4, 2" "1, 1, 3" "2, 1, 3" "3, 1, 3"
# [36] "4, 1, 3" "1, 2, 3" "2, 2, 3" "3, 2, 3" "4, 2, 3" "1, 3, 3" "2, 3, 3"
# [43] "3, 3, 3" "4, 3, 3" "1, 4, 3" "2, 4, 3" "3, 4, 3" "4, 4, 3" "1, 1, 4"
# [50] "2, 1, 4" "3, 1, 4" "4, 1, 4" "1, 2, 4" "2, 2, 4" "3, 2, 4" "4, 2, 4"
# [57] "1, 3, 4" "2, 3, 4" "3, 3, 4" "4, 3, 4" "1, 4, 4" "2, 4, 4" "3, 4, 4"
# [64] "4, 4, 4"
Note: "R version 4.1.2 (2021-11-01)".