a or b can be complex, but this uses double complex
  arithmetic which might not be available on all platforms.  The row and column names of the result are taken from the column names
  of a and of b respectively.  If b is missing the
  column names of the result are the row names of a.  No check is
  made that the column names of a and the row names of b
  are equal.
  For back-compatibility a can be a (real) QR decomposition,
  although qr.solve should be called in that case.
  qr.solve can handle non-square systems.
  Unsuccessful results from the underlying LAPACK code will result in an
  error giving a positive error code: these can only be interpreted by
  detailed study of the FORTRAN code.