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