From maechler at stat.math.ethz.ch  Fri Aug 29 15:27:01 2008
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Fri, 29 Aug 2008 15:27:01 +0200
Subject: [Rd] non user-friendly error for chol2inv functions
In-Reply-To: <XFMail.080829142105.Ted.Harding@manchester.ac.uk>
References: <18615.62161.442217.18876@stat.math.ethz.ch>
	<XFMail.080829142105.Ted.Harding@manchester.ac.uk>
Message-ID: <18615.63781.977338.875087@stat.math.ethz.ch>

>>>>> "TH" == Ted Harding <Ted.Harding at manchester.ac.uk>
>>>>>     on Fri, 29 Aug 2008 14:21:05 +0100 (BST) writes:

    TH> On 29-Aug-08 13:00:01, Martin Maechler wrote:
    >>>>>>> "cd" == christophe dutang <dutangc at gmail.com>
    >>>>>>> on Fri, 29 Aug 2008 14:28:42 +0200 writes:
    >> 
    cd> Yes, I do not cast the first argument as a matrix with
    cd> as.matrix function.
    cd> Maybe we could detail the error message if the first
    cd> argument
    cd> is a numeric?
    >> 
    cd> error(_("'a' is a numeric and must be coerced to a numeric
    cd> matrix"));
    >> 
    >> Merci, Christophe.   Yes, we *could* do that.
    >> Alternatively, I think I will just make it work in that case,
    >> since I see that 
    >> qr(), chol(), svd(), solve()  all 
    >> treat a numeric (of length 1) as a  1 x 1 matrix automatically.

    TH> I was about to draw attention to this "inconsistency"!
    TH> While one is about it, might it not be useful also to do
    TH> the converse: Treat a 1x1 matrix as a scalar in appropriate
    TH> contexts?

    TH> E.g.

    TH> a <- 4
    TH> A <- matrix(4,1,1)
    TH> B <- matrix(c(1,2,3,4),2,2)
    TH> a*B
    TH> #      [,1] [,2]
    TH> # [1,]    4   12
    TH> # [2,]    8   16

    TH> a+B
    TH> #      [,1] [,2]
    TH> # [1,]    5    7
    TH> # [2,]    6    8

    TH> A*B
    TH> # Error in A * B : non-conformable arrays
    TH> A+B
    TH> # Error in A + B : non-conformable arrays

    TH> Ted. 

I can only speak for myself and my own taste,
but I'd clearly not want that the above would just work.

I could agree of having it work  *WITH A WARNING* ...
particularly if there were more good arguments along your line
of thought..

Martin




    >> 
    cd> Thanks for your answer
    >> De rien!
    >> Martin
    >> 
    cd> 2008/8/29 Martin Maechler <maechler at stat.math.ethz.ch>
    >> 
    >> >> >>>>> "cd" == christophe dutang <dutangc at gmail.com>
    >> >> >>>>>     on Fri, 29 Aug 2008 12:44:18 +0200 writes:
    >> >> 
    cd> Hi,
    cd> In function chol2inv with the option LINPACK set to false
    >> (default),
    >> >> it
    cd> raises an error when the matrix is 1x1 matrix (i.e. just a
    >> real)
    >> >> saying
    >> >> 
    cd> 'a' must be a numeric matrix
    >> >> 
    >> >> It is very helpful, but you have to read and understand it.
    >> >> I'm pretty sure you did not provide a  1 x 1 matrix.
    >> >> 
    >> >> Here's an example showing how things works :
    >> >> 
    >> >> > m <- matrix(4,1,1)
    >> >> > cm <- chol(m)
    >> >> > cm
    >> >> [,1]
    >> >> [1,]    2
    >> >> > chol2inv(cm)
    >> >> [,1]
    >> >> [1,] 0.25
    >> >> >
    >> >> 
    >> >> Martin Maechler, ETH Zurich
    >> >> 
    >> >> 
    cd> This error is raised by the underlying C function
    >> (modLa_chol2inv in
    cd> function Lapack.c). Everything is normal, but I wonder if we
    >> could
    >> >> have
    cd> another behavior when we pass a 1x1 matrix. I spent time this
    >> >> morning
    cd> finding where was the error, and it was this "problem".
    >> >> 
    cd> Thanks in advance
    >> >> 
    cd> Christophe
    >> >> 
    cd> [[alternative HTML version deleted]]
    >> >> 
    cd> ______________________________________________
    cd> R-devel at r-project.org mailing list
    cd> https://stat.ethz.ch/mailman/listinfo/r-devel
    >> >> 
    >> 
    cd> [[alternative HTML version deleted]]
    >> 
    cd> ______________________________________________
    cd> R-devel at r-project.org mailing list
    cd> https://stat.ethz.ch/mailman/listinfo/r-devel
    >> 
    >> ______________________________________________
    >> R-devel at r-project.org mailing list
    >> https://stat.ethz.ch/mailman/listinfo/r-devel

    TH> --------------------------------------------------------------------
    TH> E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
    TH> Fax-to-email: +44 (0)870 094 0861
    TH> Date: 29-Aug-08                                       Time: 14:16:03
    TH> ------------------------------ XFMail ------------------------------

    TH> ______________________________________________
    TH> R-devel at r-project.org mailing list
    TH> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] non user-friendly error for chol2inv functions
Martin Maechler