[R] rank of a matrix

Duncan Murdoch murdoch at stats.uwo.ca
Wed May 4 21:32:14 CEST 2005


Gabor Grothendieck wrote:
> In this case, try a lower tolerance (1e-7 is the default):
> 
> 
>>qr(hilbert(9), tol = 1e-8)$rank
> 
> [1] 9

But don't trust the results.  For example, create a matrix with 4 
identical copies of hilbert(9).  This still has rank 9.  It's hard to 
find, though:

 > h9 <- hilbert(9)
 > temp <- cbind(h9, h9)
 > h9times4 <- rbind(temp, temp)
 >
 > qr(h9times4,tol=1e-7)$rank
[1] 7
 > qr(h9times4, tol=1e-8)$rank
[1] 10
 > qr(h9times4, tol=1e-9)$rank
[1] 11
 > qr(h9times4, tol=1e-10)$rank
[1] 12


There's a tolerance that gives the right answer (1.5e-8 works for me), 
but how would I know that in a real problem where I didn't already know 
the answer?

Duncan Murdoch




More information about the R-help mailing list