Nothing
#' Assign meta cluster labels to rows of a solutions data frame or extended
#' solutions data frame
#'
#' Given a solutions data frame or extended solutions data frame class object
#' and a numeric vector indicating which rows correspond to which meta
#' clusters, assigns meta clustering information to the "meta_clusters"
#' attribute of the data frame.
#'
#' @param sol_df A solutions data frame or extended solutions data frame to
#' assign meta clusters to.
#' @param split_vector A numeric vector indicating which rows of sol_df should
#' be the split points for meta cluster labeling.
#' @param order An optional numeric vector indicating how the solutions data
#' frame should be reordered prior to meta cluster labeling. This vector can
#' be obtained by running `get_matrix_order()` on an ARI matrix, which itself
#' can be obtained by calling `calc_aris()` on a solutions data frame.
#' @return A solutions data frame with a populated "meta_clusters" attribute.
#' @export
#' @examples
#' \donttest{
#' dl <- data_list(
#' list(cort_sa, "cortical_surface_area", "neuroimaging", "continuous"),
#' list(subc_v, "subcortical_volume", "neuroimaging", "continuous"),
#' list(income, "household_income", "demographics", "continuous"),
#' list(pubertal, "pubertal_status", "demographics", "continuous"),
#' uid = "unique_id"
#' )
#'
#' set.seed(42)
#' my_sc <- snf_config(
#' dl = dl,
#' n_solutions = 20,
#' min_k = 20,
#' max_k = 50
#' )
#'
#' sol_df <- batch_snf(dl, my_sc)
#'
#' sol_df
#'
#' sol_aris <- calc_aris(sol_df)
#'
#' meta_cluster_order <- get_matrix_order(sol_aris)
#'
#' # `split_vec` found by iteratively plotting ari_hm or by ?shiny_annotator()
#' split_vec <- c(6, 10, 16)
#' ari_hm <- meta_cluster_heatmap(
#' sol_aris,
#' order = meta_cluster_order,
#' split_vector = split_vec
#' )
#'
#' mc_sol_df <- label_meta_clusters(
#' sol_df,
#' order = meta_cluster_order,
#' split_vector = split_vec
#' )
#'
#' mc_sol_df
#' }
label_meta_clusters <- function(sol_df, split_vector, order = NULL) {
n_solutions <- nrow(sol_df)
# label splits ------------------------------------------------------------
labels <- rep("A", n_solutions)
if (split_vector[length(split_vector)] != n_solutions) {
split_vector <- c(split_vector, n_solutions)
}
for (i in 1:(length(split_vector) - 1)) {
start <- split_vector[i]
end <- split_vector[i + 1]
labels[start:end] <- LETTERS[i + 1]
}
#--------------------------------------------------------------------------
if (is.null(order)) {
order <- seq_len(nrow(sol_df))
}
sol_df$"mc" <- labels[order(order)]
sol_df <- sol_df[, unique(c("solution", "nclust", "mc", colnames(sol_df)))]
return(sol_df)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.