Вы можете легко сделать это с пакетом data.table
.
test <- data.frame(k = 0:5, A = sample(6), B = sample(6), C = sample(6))
library(data.table)
setDT(test)
test[, sapply(.SD, function(x) rep(k, x)), .SDcols = colnames(test)[-1]]
Здесь вы выполняете функцию function(x) rep(k, x)
, где x
- это A:C
(.SDcols = colnames(test)[-1]
) столбцов.
Результат:
A B C
[1,] 0 0 0
[2,] 0 0 0
[3,] 0 1 1
[4,] 0 1 1
[5,] 0 1 1
[6,] 0 1 1
[7,] 1 1 1
[8,] 1 2 1
[9,] 2 3 2
[10,] 3 3 3
[11,] 3 3 3
[12,] 3 4 3
[13,] 4 4 4
[14,] 4 4 4
[15,] 4 4 4
[16,] 4 4 4
[17,] 5 4 5
[18,] 5 5 5
[19,] 5 5 5
[20,] 5 5 5
[21,] 5 5 5