[R] row-echelon form (was no subject)

Spencer Graves spencer.graves at pdf.com
Thu Mar 4 15:31:09 CET 2004


      How about the following: 

 > A <- array(1:6, dim=c(3, 2))
 > A.qr <- qr(A)
 > qr.R(A.qr)
          [,1]      [,2]
[1,] -3.741657 -8.552360
[2,]  0.000000  1.963961
 >
    I'm no expert, either, and I don't have time now to research this 
further.  Perhaps someone else can further enlighten us both. 
spencer graves

John Fox wrote:

>Dear Spencer,
>
>I'd be surprised if the qr decomposition as computed in R weren't a lot more
>stable numerically, but I'm no expert. As well, I don't know how to get the
>row-echelon form from the qr decomposition -- though I suspect that you or
>someone else on the list is about to enlighten me.
>
>Regards,
> John 
>
>  
>
>>-----Original Message-----
>>From: Spencer Graves [mailto:spencer.graves at pdf.com] 
>>Sent: Wednesday, March 03, 2004 10:45 PM
>>To: John Fox
>>Cc: 'Aimin Yan'; r-help at stat.math.ethz.ch
>>Subject: Re: [R] row-echelon form (was no subject)
>>
>>How does this compare with R of the qr decomposition?  spencer graves
>>
>>John Fox wrote:
>>
>>    
>>
>>>Dear Amin,
>>>
>>>I have a function (created just for demonstration, and reproduced 
>>>below) for finding the row-echelon form of a matrix. I'm 
>>>      
>>>
>>sure that many 
>>    
>>
>>>list members could produce something that's better numerically, but 
>>>this should be OK at least for toy problems.
>>>
>>>John
>>>
>>>--------- snip -------------
>>>
>>>rowEchelonForm <- function(X, tol=.Machine$double.eps){
>>>   if ((!is.matrix(X)) || (!is.numeric(X))) stop("argument 
>>>      
>>>
>>must be a 
>>    
>>
>>>numeric matrix")
>>>   Z <- X
>>>   for (i in 1:min(dim(X))){
>>>       if (i > 1) Z[i-1,] <- 0
>>>       which <- which.max(abs(Z[,i]))  # find maximum pivot 
>>>      
>>>
>>in current 
>>    
>>
>>>column at or below current row
>>>       pivot <- X[which, i]
>>>       if (abs(pivot) <= tol) next     # check for 0 pivot
>>>       if (which > i) X[c(i,which),] <- X[c(which,i),]  # 
>>>      
>>>
>>exchange rows
>>    
>>
>>>       X[i,] <- X[i,]/pivot            # pivot
>>>       row <- X[i,]                    
>>>       X <- X - outer(X[,i], row)      # sweep
>>>       X[i,] <- row                    # restore current row
>>>       }
>>>   n <- nrow(X)
>>>   for (i in 1:n) if (max(abs(X[i,])) <= tol) X[c(i,n),] <- 
>>>      
>>>
>>X[c(n,i),]   #
>>    
>>
>>>0 rows to bottom
>>>   X
>>>   }
>>>       
>>>
>>> 
>>>
>>>      
>>>
>>>>-----Original Message-----
>>>>From: r-help-bounces at stat.math.ethz.ch 
>>>>[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Aimin Yan
>>>>Sent: Wednesday, March 03, 2004 2:42 PM
>>>>To: r-help at stat.math.ethz.ch
>>>>Subject: [R] (no subject)
>>>>
>>>>how to produce a  Row Reduced Echelon Form for a matrix in R?
>>>>Aimin Yan
>>>>
>>>>______________________________________________
>>>>R-help at stat.math.ethz.ch mailing list
>>>>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>>>>PLEASE do read the posting guide! 
>>>>http://www.R-project.org/posting-guide.html
>>>>   
>>>>
>>>>        
>>>>
>>>______________________________________________
>>>R-help at stat.math.ethz.ch mailing list
>>>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>>>PLEASE do read the posting guide! 
>>>http://www.R-project.org/posting-guide.html
>>> 
>>>
>>>      
>>>
>
>  
>




More information about the R-help mailing list