It is often helpful to find the columns of a matsindf
data frame that contain exclusively or some matrices.
This function helps with that task.
Arguments
- .df
The data frame to be queried for matrix columns.
- .drop_names
A boolean that tells whether to remove the names from the returned integer vector. Default is
FALSE
.- .any
A boolean that tells whether a column is reported when
any()
of the rows contain matrices (instead ofall()
rows contain matrices). Default isFALSE
, in which case all entries in a column must be a matrix for the column to be reported.
Details
By default, a column is considered a matrix column if all()
of the
rows contain matrices.
Use the .any
argument to modify this behavior.
By default, the vector of integers returned from this function
is named by the columns.
Use the .drop_names
function to modify this behavior.
Examples
tidy <- tibble::tibble(matrix = c("V1", "V1", "V1", "V2", "V2"),
row = c("i1", "i1", "i2", "i1", "i2"),
col = c("p1", "p2", "p2", "p1", "p2"),
vals = c(1, 2, 3, 4, 5)) |>
dplyr::mutate(
rowtypes = "Industries",
coltypes = "Products"
) |>
dplyr::group_by(matrix)
matsdf <- tidy |>
collapse_to_matrices(matnames = "matrix", matvals = "vals",
rownames = "row", colnames = "col",
rowtypes = "rowtypes", coltypes = "coltypes")
matsdf
#> matrix vals
#> 1 V1 1, 0, 2, 3
#> 2 V2 4, 0, 0, 5
matrix_cols(matsdf)
#> vals
#> 2
matrix_cols(matsdf, .drop_names = TRUE)
#> [1] 2