From lgautier at gmail.com  Tue Jun 10 09:20:11 2008
From: lgautier at gmail.com (Laurent Gautier)
Date: Tue, 10 Jun 2008 09:20:11 +0200
Subject: [Rd] Error in "getClass" when calling the function "show"
In-Reply-To: <alpine.LFD.1.10.0806100659010.28008@gannet.stats.ox.ac.uk>
References: <27d1e6020806092123v16e25f38hf1739d486fda232d@mail.gmail.com>
	<alpine.LFD.1.10.0806100659010.28008@gannet.stats.ox.ac.uk>
Message-ID: <27d1e6020806100020l4bcb3645n88f3b4ebc968eee6@mail.gmail.com>

2008/6/10 Prof Brian Ripley <ripley at stats.ox.ac.uk>:
> showDefault has
>
>    clDef <- getClass(class(object))
>
> Looks like the showDefault code intended
>
>    clDef <- getClass(class(object), .force=TRUE)
>
> However, why are you calling show() on a non-S4 object?  I cannot see any
> advtanges in doing so.

I'd like *one* printing method for all objects, and the generic "show"
is registered as working for ANYthing (see below) ?
Or is defining one's own function currently recommended ?

myPrint <- function(x, ...)
{
  if (isS4(x)) {
    show(x, ...)
  } else {
    print(x, ...)
  }
}

> showMethods("show")
Function: show (package methods)
object="ANY"
object="classRepresentation"
object="derivedDefaultMethod"
    (inherited from: object="MethodDefinition")
object="function"
    (inherited from: object="ANY")
object="genericFunction"
object="MethodDefinition"
object="MethodsList"
    (inherited from: object="ANY")
object="MethodWithNext"
object="ObjectsWithPackage"
object="signature"
object="traceable"

> showMethods("print")

Function "print":
 <not a generic function>
> getMethod("show", "ANY")
Method Definition (Class "derivedDefaultMethod"):

function (object)
showDefault(object, FALSE)
<environment: namespace:methods>

Signatures:
        object
target  "ANY"
defined "ANY"


> On Tue, 10 Jun 2008, Laurent Gautier wrote:
>
>> Dear List,
>>
>> Calling "show" on an object of class "summary.lm" gives:
>> Error in getClass(class(object)) : "summary.lm" is not a defined class
>>
>> Is this a miss on my end ?
>>
>>
>>> x <- seq(1, 10)
>>> show(x)
>>
>> [1]  1  2  3  4  5  6  7  8  9 10
>>>
>>> y <- runif(10)
>>> fit <- lm(y ~ x)
>>> show(fit)
>>
>> Call:
>> lm(formula = y ~ x)
>>
>> Coefficients:
>> (Intercept)            x
>>   1.04938     -0.08869
>>
>>> show(summary(fit))
>>
>> Error in getClass(class(object)) : "summary.lm" is not a defined class
>>>
>>> class(summary(fit))
>>
>> [1] "summary.lm"
>>>
>>> class((fit))
>>
>> [1] "lm"
>>>
>>> getClass("lm")
>>
>> Virtual Class
>>
>> No Slots, prototype of class "S4"
>>
>> Extends: "oldClass"
>>
>> Known Subclasses:
>> Class "mlm", directly
>> Class "aov", directly
>> Class "glm", directly
>> Class "maov", by class "mlm", distance 2
>> Class "glm.null", by class "glm", distance 2
>>>
>>> getClass("summary.lm")
>>
>> Error in getClass("summary.lm") : "summary.lm" is not a defined class
>>>
>>> sessionInfo()
>>
>> R version 2.7.0 Patched (2008-06-07 r45877)
>> i686-pc-linux-gnu
>>
>> locale:
>>
>> LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=C;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C
>>
>> attached base packages:
>> [1] stats     graphics  grDevices utils     datasets  methods   base
>>
>>
>> Laurent
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
> --
> Brian D. Ripley,                  ripley at stats.ox.ac.uk
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
>



[Rd] Error in "getClass" when calling the function "show"
Laurent Gautier