Apply Function for NMF Objects

Description

The function nmfApply provides exteneded apply-like functionality for objects of class NMF. It enables to easily apply a function over different margins of NMF models.

Usage

nmfApply(X, MARGIN, FUN, ..., simplify = TRUE, USE.NAMES = TRUE)

Arguments

X
an object that has suitable basis and coef methods, e.g. an NMF model.
MARGIN
a single numeric (integer) value that specifies over which margin(s) the function FUN is applied. See section Details for a list of possible values.
FUN
a function to apply over the specified margins.
...
extra arguments passed to FUN
simplify
a logical only used when MARGIN=3, that indicates if sapply should try to simplify result if possible. Since this argument follows ‘...’ its name cannot be abbreviated.
USE.NAMES
a logical only used when MARGIN=3, that indicates if sapply should use the names of the basis components to name the results if present. Since this argument follows ‘...’ its name cannot be abbreviated.

Value

a vector or a list. See apply and sapply for more details on the output format.

Details

The function FUN is applied via a call to apply or sapply according to the value of argument MARGIN as follows:

  1. MARGIN=1 apply FUN to each row of the basis matrix: apply(basis(X), 1L, FUN, ...).

  2. MARGIN=2 apply FUN to each column of the coefficient matrix: apply(coef(X), 2L, FUN, ...).

  3. MARGIN=3 apply FUN to each pair of associated basis component and basis profile: more or less sapply(seq(nbasis(X)), function(i, ...) FUN(basis(X)[,i], coef(X)[i, ], ...), ...).

    In this case FUN must be have at least two arguments, to which are passed each basis components and basis profiles respectively -- as numeric vectors.

  4. MARGIN=4 apply FUN to each column of the basis matrix, i.e. to each basis component: apply(basis(X), 2L, FUN, ...).

  5. MARGIN=5 apply FUN to each row of the coefficient matrix: apply(coef(X), 1L, FUN, ...).