facmul-methods {Matrix}R Documentation

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, ...)

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.

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 ...
## Not run: 
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))
})

## End(Not run)

[Package Matrix version 1.7-0 Index]