Matrix (version 1.6-5)

facmul-methods: Multiplication by Factors from Matrix Factorizations

Description

Multiplies a matrix or vector on the left or right by a factor from a matrix factorization or its transpose.

Usage

facmul(x, factor, y, trans = FALSE, left = TRUE, ...)

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.

Arguments

x

a MatrixFactorization object.

factor

a character string indicating a factor in the factorization represented by x, typically an element of names(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 y should be multiplied on the left by the factor, rather than on the right.

...

further arguments passed to or from methods.

Details

facmul is experimental and currently no methods are exported from Matrix.

Examples

Run this code
 
library(stats, pos = "package:base", verbose = FALSE)

## Conceptually, methods for 'facmul' _would_ behave as follows ...
if (FALSE) {
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))
})
}

Run the code above in your browser using DataLab