Мы могли бы создать матрицу с 0, где количество строк такое же, как index
, а количество столбцов - максимальное значение в index
. Затем мы можем создать строку, матрицу столбца, используя функцию row
в качестве индекса строки и значения index
в качестве индекса столбца и превратить их в 1.
mat <- matrix(0, ncol = max(index, na.rm = TRUE), nrow = nrow(index))
mat[cbind(c(row(index)), c(index))] <- 1
mat
# [,1] [,2] [,3] [,4] [,5]
#[1,] 1 0 1 0 0
#[2,] 1 1 0 0 0
#[3,] 1 0 1 0 0
#[4,] 1 0 1 0 1
#[5,] 1 0 0 1 1
#[6,] 0 1 0 0 0
#[7,] 0 0 1 1 0
data
index <- structure(c(1, 1, 1, 1, 1, 2, 3, NA, 2, 3, 3, 4, NA, 4, 3, NA,
NA, 5, 5, NA, NA), .Dim = c(7L, 3L))