R-beta: solve

Simon Fear fear at scmp.scm.liv.ac.uk
Fri Oct 24 12:47:20 CEST 1997

Silly me thinking solve code wasn't accessible in R (cos it isn't in S-PLUS). All you 
need is a tiny edit:

> mysolve
function (a, b, tol = 1e-07) 
        if (!is.qr(a)) 
                a <- qr(a, tol = tol)
        nc <- ncol(a$qr)
        if (a$rank != nc) {
                warning("singular matrix \'a\' in solve")
                return(rep(NA, nc))
        if (missing(b)) {
                if (nc != nrow(a$qr)) {
                        warning("only square matrices can be inverted")
                        return(rep(NA, nc))
                b <- diag(1, nc)
        b <- as.matrix(b)
        return(qr.coef(a, b))

Well, not quite all; if b is the wrong length, you'll still get a fatal error 
from qr.coef, but that's just as easily edited.

Advise Jim (and anybody else) to edit nlm into mynlm with a call to mysolve (and 
a subsequent test that !is.na(ans[1]); you might get very strange 
compatability/porting problems if you overwrite the default solve.

Simon Fear
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch

More information about the R-help mailing list