QR.Auxiliaries             package:base             R Documentation

_R_e_c_o_n_s_t_r_u_c_t _t_h_e _Q, _R, _o_r _X _M_a_t_r_i_c_e_s _f_r_o_m _a _Q_R _O_b_j_e_c_t

_D_e_s_c_r_i_p_t_i_o_n:

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

_U_s_a_g_e:

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

_A_r_g_u_m_e_n_t_s:

   qrstr: 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(qrstr$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.

_V_a_l_u_e:

     `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 qrstr.  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'.

_E_x_a_m_p_l_e_s:

     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)

