From georg|@bo@hn@kov @end|ng |rom m@nche@ter@@c@uk  Fri Sep 11 11:18:54 2020
From: georg|@bo@hn@kov @end|ng |rom m@nche@ter@@c@uk (Georgi Boshnakov)
Date: Fri, 11 Sep 2020 09:18:54 +0000
Subject: [Rd] more Matrix weirdness
In-Reply-To: <CAB8pepxxoJV2GJp_CsUee+4gRCw2e=DXb2zfgXbArJ+yxQ6Ahg@mail.gmail.com>
References: <AM0PR0102MB3443F1F91F70197C52FE71ADAE260@AM0PR0102MB3443.eurprd01.prod.exchangelabs.com>
 <24410.8333.102266.856181@stat.math.ethz.ch>
 <CAB8pepxxoJV2GJp_CsUee+4gRCw2e=DXb2zfgXbArJ+yxQ6Ahg@mail.gmail.com>
Message-ID: <AM0PR0102MB344323F157EA05E0A78846CFAE240@AM0PR0102MB3443.eurprd01.prod.exchangelabs.com>

Abby, my answer was too concise. The thrust is that even if you define a method for 
"[<-" with signature x="matrix" and value ="Matrix", for example, it will never be used since "matrix" is S3. 
If instead x="someS4class" then the S4 method will be invoked.

There may be cases when changing the class of the left-hand side make sense (such as one subclass of "Matrix" to another) but certainly not for the base R vector classes.


Georgi Boshnakov


-----Original Message-----
From: Abby Spurdle <spurdle.a at gmail.com> 
Sent: 11 September 2020 03:03
To: Martin Maechler <maechler at stat.math.ethz.ch>
Cc: Georgi Boshnakov <georgi.boshnakov at manchester.ac.uk>; r-devel at r-project.org
Subject: Re: [Rd] more Matrix weirdness

>     > "These operators are also implicit S4 generics, but as
>     > primitives, S4 methods will be dispatched only on S4
>     > objects ?x?."

> Yes, exactly,  very well found, Georgi!

I'm sorry Martin, but I don't understand your point here.

I'm assuming that you want the (S3) matrix, x, to be converted to an
(S4) Matrix.

However, this is not a question of method dispatch, as such.
But rather a question of type conversion (integer to numeric to complex, etc).

Specifically, can/should automatic type conversion, convert an S3 data type to an S4 data type, even where user-defined data types are involved?


[Rd] more Matrix weirdness
Georgi Boshnakov