Rev 68948 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
% File src/library/base/man/qraux.Rd% Part of the R package, https://www.R-project.org% Copyright 1995-2015 R Core Team% Copyright 2002-2015 The R Foundation% Distributed under GPL 2 or later\name{QR.Auxiliaries}\title{Reconstruct the Q, R, or X Matrices from a QR Object}\usage{qr.X(qr, complete = FALSE, ncol =)qr.Q(qr, complete = FALSE, Dvec =)qr.R(qr, complete = FALSE)}\alias{qr.X}\alias{qr.Q}\alias{qr.R}\arguments{\item{qr}{object representing a QR decomposition. This willtypically have come from a previous call to \code{\link{qr}} or\code{\link{lsfit}}.}\item{complete}{logical expression of length 1. Indicates whether anarbitrary orthogonal completion of the \eqn{\bold{Q}} or\eqn{\bold{X}} matrices is to be made, or whether the \eqn{\bold{R}}matrix is to be completed by binding zero-value rows beneath thesquare upper triangle.}\item{ncol}{integer in the range \code{1:nrow(qr$qr)}. The numberof columns to be in the reconstructed \eqn{\bold{X}}. The defaultwhen \code{complete} is \code{FALSE} is the first\code{min(ncol(X), nrow(X))} columns of the original \eqn{\bold{X}}from which the qr object was constructed. The default when\code{complete} is \code{TRUE} is a square matrix with the original\eqn{\bold{X}} in the first \code{ncol(X)} columns and an arbitraryorthogonal completion (unitary completion in the complex case) inthe remaining columns.}\item{Dvec}{vector (not matrix) of diagonal values. Each column ofthe returned \eqn{\bold{Q}} will be multiplied by the correspondingdiagonal value. Defaults to all \code{1}s.}}\description{Returns the original matrix from which the object was constructed orthe components of the decomposition.}\value{\code{qr.X} returns \eqn{\bold{X}}, the original matrix fromwhich the qr object was constructed, provided \code{ncol(X) <= nrow(X)}.If \code{complete} is \code{TRUE} or the argument \code{ncol} is greater than\code{ncol(X)}, additional columns from an arbitrary orthogonal(unitary) completion of \code{X} are returned.\code{qr.Q} returns part or all of \bold{Q}, the orthogonal (unitary)transformation of order \code{nrow(X)} represented by \code{qr}. If\code{complete} is \code{TRUE}, \bold{Q} has \code{nrow(X)} columns.If \code{complete} is \code{FALSE}, \bold{Q} has \code{ncol(X)}columns. When \code{Dvec} is specified, each column of \bold{Q} ismultiplied by the corresponding value in \code{Dvec}.Note that \code{qr.Q(qr, *)} is a special case of\code{\link{qr.qy}(qr, y)} (with a \dQuote{diagonal} \code{y}), and\code{qr.X(qr, *)} is basically \code{\link{qr.qy}(qr, R)} (apart frompivoting and \code{dimnames} setting).\code{qr.R} returns \bold{R}. This may be pivoted, e.g., if\code{a <- qr(x)} then \code{x[, a$pivot]} = \bold{QR}. The number ofrows of \bold{R} is either \code{nrow(X)} or \code{ncol(X)} (and maydepend on whether \code{complete} is \code{TRUE} or \code{FALSE}).}\seealso{\code{\link{qr}},\code{\link{qr.qy}}.}\examples{p <- ncol(x <- LifeCycleSavings[, -1]) # not the 'sr'qrstr <- qr(x) # dim(x) == c(n,p)qrstr $ rank # = 4 = pQ <- qr.Q(qrstr) # dim(Q) == dim(x)R <- qr.R(qrstr) # dim(R) == ncol(x)X <- qr.X(qrstr) # X == xrange(X - as.matrix(x)) # ~ < 6e-12## X == Q \%*\% R if there has been no pivoting, as here:all.equal(unname(X),unname(Q \%*\% R))# example of pivotingx <- cbind(int = 1,b1 = rep(1:0, each = 3), b2 = rep(0:1, each = 3),c1 = rep(c(1,0,0), 2), c2 = rep(c(0,1,0), 2), c3 = rep(c(0,0,1),2))x # is singular, columns "b2" and "c3" are "extra"a <- qr(x)zapsmall(qr.R(a)) # columns are int b1 c1 c2 b2 c3a$pivotpivI <- sort.list(a$pivot) # the inverse permutationall.equal (x, qr.Q(a) \%*\% qr.R(a)) # no, nostopifnot(all.equal(x[, a$pivot], qr.Q(a) \%*\% qr.R(a)), # TRUEall.equal(x , qr.Q(a) \%*\% qr.R(a)[, pivI])) # TRUE too!}\keyword{algebra}\keyword{array}