# [Rd] wrong matrix dimension in sparseQR

Serguei Sokol sokol at insa-toulouse.fr
Fri Jan 19 10:12:21 CET 2018

```I have found explanation in the comments to original cs_qr() matlab function
http://users.encs.concordia.ca/~krzyzak/R%20Code-Communications%20in%20Statistics%20and%20Simulation%202014/Zubeh%F6r/SuiteSparse/CSparse3/MATLAB/CSparse/cs_qr.m

"If A is structurally rank deficient, additional empty
rows may have been added to V and R."

To my mind, it could be useful to mention it in the manual of Matrix::qr
and/or sparseQR-class too. Because in case of augmented nrow
we cannot do anymore A[p+1,] as cited in example in ?"sparseQR-class".

My 2 cents.
Serguei.

Le 18/01/2018 à 16:13, Serguei Sokol a écrit :
> Hi,
>
> I came across a case when the dimensions of matrices returned by qr()
> operated on a sparse matrix does not coincide with the initial matrix.
If A is structurally rank deficient, additional empty
%   rows may have been added to V and R.
>
> Here is a spinet code that should produce an example (one of many that I could provide):
>
>  m=205
>  n=199
>  set.seed(7);
>  a=matrix(rnorm(m*n), m, n)
>  a[sample(seq(m*n), m*(n-4))]=0
>  a=as(a, "Matrix")
>  qa=qr(a);
>  stopifnot(nrow(qa at R) == m)
>  # On my box I have nrow(qa at R):=207 while should be 205 as m is)
>
> Note that for m=203 and n=197, the same code produce right (i.e. coinciding) dimensions.
>
> Have I missed something?
>
> Serguei.
>
> > R.version
> platform       x86_64-pc-linux-gnu
> arch           x86_64
> os             linux-gnu
> system         x86_64, linux-gnu
> status
> major          3
> minor          4.3
> year           2017
> month          11
> day            30
> svn rev        73796
> language       R
> version.string R version 3.4.3 (2017-11-30)
> nickname       Kite-Eating Tree
>
>

--
Serguei Sokol
Ingenieur de recherche INRA

Cellule mathématique
LISBP, INSA/INRA UMR 792, INSA/CNRS UMR 5504
135 Avenue de Rangueil
31077 Toulouse Cedex 04

tel: +33 5 6155 9849
email: sokol at insa-toulouse.fr
http://www.lisbp.fr

```