Multiplication by Factors from Matrix Factorizations
facmul-methods.RdMultiplies a matrix or vector on the left or right by a factor from a matrix factorization or its transpose.
Arguments
- x
a
MatrixFactorizationobject.- factor
a character string indicating a factor in the factorization represented by
x, typically an element ofnames(expand2(x, ...)).- y
a matrix or vector to be multiplied on the left or right by the factor or its transpose.
- trans
a logical indicating if the transpose of the factor should be used, rather than the factor itself.
- left
a logical indicating if the
yshould be multiplied on the left by the factor, rather than on the right.- ...
further arguments passed to or from methods.
Value
The value of op(M) %*% y or y %*% op(M),
depending on left, where M is the factor
(always without dimnames) and op(M)
is M or t(M), depending on trans.
Examples
## Conceptually, methods for 'facmul' _would_ behave as follows ...
if (FALSE) { # \dontrun{
n <- 3L
x <- lu(Matrix(rnorm(n * n), n, n))
y <- rnorm(n)
L <- unname(expand2(x)[[nm <- "L"]])
stopifnot(exprs = {
all.equal(facmul(x, nm, y, trans = FALSE, left = TRUE), L %*% y)
all.equal(facmul(x, nm, y, trans = FALSE, left = FALSE), y %*% L)
all.equal(facmul(x, nm, y, trans = TRUE, left = TRUE), crossprod(L, y))
all.equal(facmul(x, nm, y, trans = TRUE, left = FALSE), tcrossprod(y, L))
})
} # }