[Rd] more Matrix weirdness

Georgi Boshnakov georg|@bo@hn@kov @end|ng |rom m@nche@ter@@c@uk
Fri Sep 11 11:18:54 CEST 2020


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 using gmail.com> 
Sent: 11 September 2020 03:03
To: Martin Maechler <maechler using stat.math.ethz.ch>
Cc: Georgi Boshnakov <georgi.boshnakov using manchester.ac.uk>; r-devel using 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?


More information about the R-devel mailing list