# decom_NMF.R
# ::rtemis::
# 2025 EDG rtemis.org
#' Non-negative Matrix Factorization (NMF)
#'
#' Decomposes a data matrix into non-negative factors using NMF.
#'
#' @param x A numeric matrix or data frame to be decomposed.
#' @param parameters `NMFParameters` object.
#' @param verbosity Integer: Verbosity level.
#'
#' @return A list containing the decomposition and transformed data.
#'
#' @author EDG
#' @keywords internal
#' @noRd
decom_NMF <- function(x, parameters, verbosity = 1L) {
# Checks ----
check_is_S7(parameters, NMFParameters)
check_dependencies("NMF")
check_unsupervised_data(x = x, allow_missing = FALSE)
# Decompose ----
xm <- as.matrix(x)
args <- list(x = t(xm), rank = parameters[["k"]], nrun = parameters[["nrun"]])
decom <- do_call(NMF::nmf, args)
check_inherits(decom, "NMFfit")
basis <- NMF::basis(decom)
transformed <- xm %*% basis
colnames(transformed) <- paste0("NMF_", seq_len(NCOL(transformed)))
list(decom = decom, transformed = transformed)
} # /rtemis::decom_NMF
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.