Turning a sparse matrix into a tibble.
Examples
set.seed(1234)
mat <- matrix(sample(0:1, 100, TRUE, c(0.9, 0.1)), nrow = 10)
colnames(mat) <- letters[1:10]
sparse_mat <- Matrix::Matrix(mat, sparse = TRUE)
sparse_mat
#> 10 x 10 sparse Matrix of class "dgCMatrix"
#> [[ suppressing 10 column names ‘a’, ‘b’, ‘c’ ... ]]
#>
#> [1,] . . . . . . . . 1 .
#> [2,] . . . . . . . . . 1
#> [3,] . . . . . . . . . .
#> [4,] . 1 . . . . . . . .
#> [5,] . . . . . . . . . .
#> [6,] . . . . . . . . . .
#> [7,] . . . . . . . . . .
#> [8,] . . 1 . . . . . . .
#> [9,] . . . 1 . . . . . .
#> [10,] . . . . . . . . . .
res <- coerce_to_sparse_tibble(sparse_mat)
res
#> # A tibble: 10 × 10
#> a b c d e f g h i j
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 0 0 0 0 1 1 1 1 1 0
#> 2 0 0 0 0 0 0 0 0 0 1
#> 3 0 0 0 0 0 0 0 0 0 0
#> 4 1 1 0 0 0 0 0 0 0 0
#> 5 0 0 0 0 0 0 0 0 0 0
#> 6 0 0 0 0 0 0 0 0 0 0
#> 7 0 0 0 0 0 0 0 0 0 0
#> 8 0 0 1 0 0 0 0 0 0 0
#> 9 0 0 0 1 1 1 1 1 0 0
#> 10 0 0 0 0 0 0 0 0 0 0
# All columns are sparse
vapply(res, is_sparse_vector, logical(1))
#> a b c d e f g h i j
#> TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE