QR.Auxiliaries             package:base             R Documentation

Reconstruct the Q, R, or X Matrices from a QR Object

Description:

     Returns the original matrix from which the object was constructed
     or the components of the decomposition.

Usage:

     qr.X(qr, complete = FALSE, ncol =)
     qr.Q(qr, complete = FALSE, Dvec =)
     qr.R(qr, complete = FALSE)

Arguments:

      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 first 'min(ncol(X), nrow(X))' columns of
          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.  Defaults to all '1's.

Value:

     'qr.X' returns *X*, the original matrix from which the qr object
     was constructed, provided 'ncol(X) <= nrow(X)'. 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'.

See Also:

     'qr', 'qr.qy'.

Examples:

     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 :
     Q %*% R

