| QR.Auxiliaries {base} | R Documentation |
Returns the original matrix from which the object was constructed or the components of the decomposition.
qr.X(qr, complete = FALSE, ncol =) qr.Q(qr, complete = FALSE, Dvec = 1) qr.R(qr, complete = FALSE)
qr |
object representing a QR decomposition. This will
typically have come from a previous call to qr or
lsfit. |
complete |
logical expression of length 1. Indicates whether an arbitrary orthogonal completion of the Q or X matrices is to be made, or whether the R matrix is to be completed by binding zero-value rows beneath the square upper triangle. |
ncol |
integer in the range 1:nrow(qr$qr). The number
of columns to be in the reconstructed X. The default
when complete is FALSE is the original X
from which the qr object was constructed. The default when
complete is TRUE is a square matrix with the original
X in the first ncol(X) columns and an arbitrary
orthogonal completion (unitary completion in the complex case) in
the remaining columns. |
Dvec |
vector (not matrix) of diagonal values. Each column of the returned Q will be multiplied by the corresponding diagonal value. |
qr.X returns X, the original matrix from
which the qr object was constructed. If complete is
TRUE or the argument ncol is greater than
ncol(X), additional columns from an arbitrary orthogonal
(unitary) completion of X are returned.
qr.Q returns Q, the order-nrow(X) orthogonal (unitary)
transformation represented by qr. If complete is
TRUE, Q has nrow(X) columns. If complete
is FALSE, Q has ncol(X) columns. When
Dvec is specified, each column of Q is multiplied by the
corresponding value in Dvec.
qr.R returns R, the upper triangular matrix such that
X == Q %*% R. The number of rows of R is
nrow(X) or ncol(X), depending on whether complete
is TRUE or FALSE.
data(LifeCycleSavings) p <- ncol(x <- LifeCycleSavings[,-1]) # not the `sr' qrstr <- qr(x) # dim(x) == c(n,p) qrstr $ rank # = 4 = p Q <- qr.Q(qrstr) # dim(Q) == dim(x) R <- qr.R(qrstr) # dim(R) == ncol(x) X <- qr.X(qrstr) # X == x range(X - as.matrix(x))# ~ < 6e-12 ## X == Q %*% R : all((1 - X /( Q %*% R))< 100*.Machine$double.eps)#TRUE dim(Qc <- qr.Q(qrstr, complete=TRUE)) # Square: dim(Qc) == rep(nrow(x),2) all((crossprod(Qc) - diag(nrow(x))) < 10*.Machine $double.eps) QD <- qr.Q(qrstr, D=1:p) # QD == Q %*% diag(1:p) all(QD - Q %*% diag(1:p) < 8* .Machine$double.eps) dim(Rc <- qr.R(qrstr, complete=TRUE)) # == dim(x) dim(Xc <- qr.X(qrstr, complete=TRUE)) # square: nrow(x) ^ 2 all(Xc[,1:p] == X)