This method provides a convenient way of sub-setting objects of class NMF
,
using a matrix-like syntax.
It allows to consistently subset one or both matrix factors in the NMF model, as well as retrieving part of the basis components or part of the mixture coefficients with a reduced amount of code.
S4 (NMF)
`[`(x, i, j, ..., drop = FALSE)
numeric
, logical
, or character
vector
(whose elements must match the row names of x
).
In the case of a logical
vector the entries are recycled if necessary.numeric
, logical
, or character
vector
(whose elements must match the column names of x
).
In the case of a logical
vector the entries are recycled if necessary.numeric
, logical
, or character
vector
(whose elements must match the basis names of x
).
In the case of a logical
vector the entries are recycled if necessary.
Note that only the first extra subset index is used.
A warning is thrown if more than one extra argument is passed in ...
.logical
value used to drop the NMF-class
wrapping and only return subsets of one of the factor matrices (see Details)The returned value depends on the number of subset index passed and the
value of argument drop
:
x[]
or x[,]
: the value is the
object x
unchanged.
x[i]
: the value is the complete NMF
model composed of the selected basis components, subset by i
,
except if argument drop=TRUE
, or if it is missing and i
is of length 1.
Then only the basis matrix is returned with dropped dimensions:
x[i, drop=TRUE]
<=> drop(basis(x)[, i])
.
This means for example that x[1L]
is the first basis vector,
and x[1:3, drop = TRUE]
is the matrix composed of the 3 first basis vectors -- in columns.
Note that in version <= 0.18.3, the call x[i, drop = TRUE.or.FALSE]
was equivalent to
basis(x)[, i, drop=TRUE.or.FALSE]
.
drop=FALSE
(default) as in
x[i,j]
, x[i,]
, x[,j]
, x[i,j,k]
, x[i,,k]
,
etc...: the value is a NMF
object whose basis and/or mixture
coefficient matrices have been subset accordingly. The third index k
affects simultaneously the columns of the basis matrix AND the rows of the
mixture coefficient matrix. In this case argument drop
is not used.
drop=TRUE
and i
xor j
missing: the value returned is the matrix that is the more affected by the
subset index. That is that x[i, , drop=TRUE]
and x[i, , k,
drop=TRUE]
return the basis matrix subset by [i,]
and [i,k]
respectively, while x[, j, drop=TRUE]
and x[, j, k, drop=TRUE]
return the mixture coefficient matrix subset by [,j]
and [k,j]
respectively.