[Rd] non user-friendly error for chol2inv functions
Martin Maechler
maechler at stat.math.ethz.ch
Fri Aug 29 15:27:01 CEST 2008
>>>>> "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
More information about the R-devel
mailing list