Sub-setting NMF Objects
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 method for signature 'NMF' x[i, j, ..., drop = FALSE]
i |
index used to subset on the rows of the
basis matrix (i.e. the features). It can be a
|
j |
index used to subset on the columns of
the mixture coefficient matrix (i.e. the samples). It can
be a |
... |
used to specify a third index to subset on the
basis components, i.e. on both the columns and rows of
the basis matrix and mixture coefficient respectively. It
can be a Note that only the first extra subset index is used. A
warning is thrown if more than one extra argument is
passed in |
drop |
single |
x |
object from which to extract element(s) or in which to replace element(s). |
The returned value depends on the number of subset index
passed and the value of argument drop
:
No index as in x[]
or x[,]
:
the value is the object x
unchanged.
One single index as in 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]
.
More than one index with 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.
More than one index with 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.
# create a dummy NMF object that highlight the different way of subsetting a <- nmfModel(W=outer(seq(1,5),10^(0:2)), H=outer(10^(0:2),seq(-1,-10))) basisnames(a) <- paste('b', 1:nbasis(a), sep='') rownames(a) <- paste('f', 1:nrow(a), sep='') colnames(a) <- paste('s', 1:ncol(a), sep='') # or alternatively: # dimnames(a) <- list( features=paste('f', 1:nrow(a), sep='') # , samples=paste('s', 1:ncol(a), sep='') # , basis=paste('b', 1:nbasis(a)) ) # look at the resulting NMF object a basis(a) coef(a) # extract basis components a[1] a[1, drop=FALSE] # not dropping matrix dimension a[2:3] # subset on the features a[1,] a[2:4,] # dropping the NMF-class wrapping => return subset basis matrix a[2:4,, drop=TRUE] # subset on the samples a[,1] a[,2:4] # dropping the NMF-class wrapping => return subset coef matrix a[,2:4, drop=TRUE] # subset on the basis => subsets simultaneously basis and coef matrix a[,,1] a[,,2:3] a[4:5,,2:3] a[4:5,,2:3, drop=TRUE] # return subset basis matrix a[,4:5,2:3, drop=TRUE] # return subset coef matrix # 'drop' has no effect here a[,,2:3, drop=TRUE]
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.