new("sparseQR", ...)
but are more commonly created by function qr
applied
to a sparse matrix such as a matrix of class
dgCMatrix
.A[p+1,] == Q %*% R
, if
the q
slot if of length 0 or A[p+1,q+1] == Q %*% R
where A is a sparse $m\times n$ matrix ($m\ge n$),
$R$ is an $m\times n$ matrix that is zero below the
main diagonal. The p
slot is a 0-based permutation of
1:m
applied to the rows of the original matrix. If the q
slot has length n
it is a 0-based permutation of 1:n
applied to the columns of the original matrix to reduce the amount
of "fill-in" in the matrix $R$. The matrix $Q$ is a "virtual matrix". It is the product of
$n$ Householder transformations. The information to generate
these Householder transformations is stored in the V
and
beta
slots.
The "sparseQR"
methods for the qr.*
functions return
objects of class "dgeMatrix"
(see
). Results from qr.coef
,
qr.resid
and qr.fitted
(when k == ncol(R)
) are
well-defined and should match those from the corresponding dense matrix
calculations. However, because the matrix Q
is not uniquely
defined, the results of qr.qy
and qr.qty
do not
necessarily match those from the corresponding dense matrix
calculations.
Also, the results of qr.qy
and qr.qty
apply to the
permuted column order when the q
slot has length n
.
qr
, qr.Q
,
qr.R
, qr.fitted
,
qr.resid
, qr.coef
,
qr.qty
, qr.qy
,
dgCMatrix
, dgeMatrix
.data(KNex); mm <- KNex$mm
str(mmQR <- qr(mm))
Run the code above in your browser using DataLab