[Rd] Defining a `show` function breaks the print-ing of S4 object -- bug or expected?
Lorenz, David
lorenz at usgs.gov
Tue Jun 30 17:27:14 CEST 2015
There is something I'm really missing here. The function show is a
standardGeneric function, so the correct way to write it as method like
this:
setMethod("show", "Person", function(object) {
for an object of class "Person" for example.
Dave
On Tue, Jun 30, 2015 at 10:11 AM, <luke-tierney at uiowa.edu> wrote:
> Same thing happens with S3 if you redefine print(). I thought that
> code was actually calculating the function to call rather than the
> symbol to use, but apparently not. Shouldn't be too hard to fix.
>
> luke
>
> On Tue, 30 Jun 2015, Hadley Wickham wrote:
>
> On Tue, Jun 30, 2015 at 2:20 PM, Duncan Murdoch
>> <murdoch.duncan at gmail.com> wrote:
>>
>>> On 30/06/2015 1:57 PM, Hadley Wickham wrote:
>>>
>>>> A slightly simpler formulation of the problem is:
>>>>
>>>> show <- function(...) stop("My show!")
>>>> methods::setClass("Person", slots = list(name = "character"))
>>>> methods::new("Person", name = "Tom")
>>>> #> Error in (function (...) : My show!
>>>>
>>>
>>> Just to be clear: the complaint is that the auto-called show() is not
>>> methods::show? I.e. after
>>>
>>> x <- methods::new("Person", name = "Tom")
>>>
>>> you would expect
>>>
>>> show(x)
>>>
>>> to give the error, but not
>>>
>>> x
>>>
>>> ??
>>>
>>
>> Correct - I'd expect print() to always call methods::show(), not
>> whatever show() is first on the search path.
>>
>> Hadley
>>
>>
>>
> --
> Luke Tierney
> Ralph E. Wareham Professor of Mathematical Sciences
> University of Iowa Phone: 319-335-3386
> Department of Statistics and Fax: 319-335-3017
> Actuarial Science
> 241 Schaeffer Hall email: luke-tierney at uiowa.edu
> Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
>
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
[[alternative HTML version deleted]]
More information about the R-devel
mailing list