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.
nmfApply(X, MARGIN, FUN, ..., simplify = TRUE,
USE.NAMES = TRUE)
a vector or a list. See apply
and
sapply
for more details on the output
format.
an object that has suitable basis
and coef
methods, e.g. an NMF model.
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.
a function to apply over the specified margins.
extra arguments passed to FUN
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.
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.
The function FUN
is applied via a call to
apply
or sapply
according to
the value of argument MARGIN
as follows:
apply FUN
to each
row of the basis matrix: apply(basis(X), 1L,
FUN, ...)
.
apply FUN
to each column
of the coefficient matrix: apply(coef(X), 2L, FUN,
...)
.
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.
apply FUN
to each column
of the basis matrix, i.e. to each basis component:
apply(basis(X), 2L, FUN, ...)
.
apply FUN
to each row of
the coefficient matrix: apply(coef(X), 1L, FUN,
...)
.