With this patch,

> A <- matrix(1, 2, 2)
> B <- matrix(2, 3, 2)
> A %*% B
Error in A %*% B : 
  non-conformable arguments of dimension (2, 2) and (3, 2)

>From 205b591d4d14b5ff667325fb233a6deb08314726 Mon Sep 17 00:00:00 2001
From: Joshua Nathaniel Pritikin <jpriti...@pobox.com>
Date: Fri, 5 Apr 2019 12:03:58 -0400
Subject: [PATCH] Improve non-conformable arguments error message

---
 src/main/array.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/main/array.c b/src/main/array.c
index 4b95e33..cedf627 100644
--- a/src/main/array.c
+++ b/src/main/array.c
@@ -1350,15 +1350,18 @@ SEXP attribute_hidden do_matprod(SEXP call, SEXP op, 
SEXP args, SEXP rho)
     if (PRIMVAL(op) == 0) {
        /* primitive, so use call */
        if (ncx != nry)
-           errorcall(call, _("non-conformable arguments"));
+         errorcall(call, _("non-conformable arguments of dimension (%d, %d) 
and (%d, %d)"),
+                   nrx, ncx, nry, ncy);
     }
     else if (PRIMVAL(op) == 1) {
        if (nrx != nry)
-           error(_("non-conformable arguments"));
+         error(_("non-conformable arguments of dimension (%d, %d) and (%d, 
%d)"),
+               nrx, ncx, nry, ncy);
     }
     else {
        if (ncx != ncy)
-           error(_("non-conformable arguments"));
+         error(_("non-conformable arguments of dimension (%d, %d) and (%d, 
%d)"),
+               nrx, ncx, nry, ncy);
     }
 
     if (isComplex(CAR(args)) || isComplex(CADR(args)))
-- 
2.19.1

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

Reply via email to