From hpages at fredhutch.org  Wed Nov 29 20:46:59 2017
From: hpages at fredhutch.org (=?UTF-8?B?SGVydsOpIFBhZ8Oocw==?=)
Date: Wed, 29 Nov 2017 11:46:59 -0800
Subject: [Rd] binary form of is() contradicts its unary form
In-Reply-To: <CAPtbhHzXe3=EBW6wwyx1Hh158qjBrC0vfFbh4+o3bRZTC+c5Kw@mail.gmail.com>
References: <5A1EF8DB.6080401@fredhutch.org>
 <CAPtbhHzXe3=EBW6wwyx1Hh158qjBrC0vfFbh4+o3bRZTC+c5Kw@mail.gmail.com>
Message-ID: <5A1F0EB3.7090508@fredhutch.org>

Hi Mehmet,

On 11/29/2017 11:22 AM, Suzen, Mehmet wrote:
> Hi Herve,
>
> I think you are confusing subclasses and classes. There is no
> contradiction. `is` documentation
> is very clear:
>
> `With one argument, returns all the super-classes of this object's class.`

Yes that's indeed very clear. So if "list" is a super-class
of "data.frame" (as reported by is(data.frame())), then
is(data.frame(), "list") should be TRUE.

With S4 classes:

   setClass("A")
   setClass("B", contains="A")

   ## Get all the super-classes of B.
   is(new("B"))
   # [1] "B" "A"

   ## Does a B object inherit from A?
   is(new("B"), "A")
   # [1] TRUE

Cheers,
H.

>
> Note that object class is always `data.frame` here, check:
>
>  > class(data.frame())
> [1] "data.frame"
>  > is(data.frame(), "data.frame")
> [1] TRUE
>
> Best,
> Mehmet
>
>
>
>
>
> On 29 Nov 2017 19:13, "Herv? Pag?s" <hpages at fredhutch.org
> <mailto:hpages at fredhutch.org>> wrote:
>
>     Hi,
>
>     The unary forms of is() and extends() report that data.frame
>     extends list, oldClass, and vector:
>
>        > is(data.frame())
>        [1] "data.frame" "list"       "oldClass"   "vector"
>
>        > extends("data.frame")
>        [1] "data.frame" "list"       "oldClass"   "vector"
>
>     However, the binary form of is() disagrees:
>
>        > is(data.frame(), "list")
>        [1] FALSE
>        > is(data.frame(), "oldClass")
>        [1] FALSE
>        > is(data.frame(), "vector")
>        [1] FALSE
>
>     while the binary form of extends() agrees:
>
>        > extends("data.frame", "list")
>        [1] TRUE
>        > extends("data.frame", "oldClass")
>        [1] TRUE
>        > extends("data.frame", "vector")
>        [1] TRUE
>
>     Who is right?
>
>     Shouldn't 'is(object, class2)' be equivalent
>     to 'class2 %in% is(object)'? Furthermore, is there
>     any reason why 'is(object, class2)' is not implemented
>     as 'class2 %in% is(object)'?
>
>     Thanks,
>     H.
>
>     --
>     Herv? Pag?s
>
>     Program in Computational Biology
>     Division of Public Health Sciences
>     Fred Hutchinson Canc
>     <https://urldefense.proofpoint.com/v2/url?u=https-3A__maps.google.com_-3Fq-3DFred-2BHutchinson-2BCanc-26entry-3Dgmail-26source-3Dg&d=DwMFaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=AptypGUf1qnpkFcOc1eU_vdGSHsush3RGVUyjk7yDu8&s=sTr3VPPxYCZLOtlBS3DToP4-Wi44EOLs99gJcV932b0&e=>er
>     Research Center
>     1100 Fairview Ave. N, M1-B514
>     P.O. Box 19024
>     Seattle, WA 98109-1024
>
>     E-mail: hpages at fredhutch.org <mailto:hpages at fredhutch.org>
>     Phone:  (206) 667-5791
>     Fax:    (206) 667-1319
>
>     ______________________________________________
>     R-devel at r-project.org <mailto:R-devel at r-project.org> mailing list
>     https://stat.ethz.ch/mailman/listinfo/r-devel
>     <https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_r-2Ddevel&d=DwMFaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=AptypGUf1qnpkFcOc1eU_vdGSHsush3RGVUyjk7yDu8&s=OzNPwqjAWVsXOGKMCmd4Fa7Udcm21ewfJmUN78LenQY&e=>
>

-- 
Herv? Pag?s

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M1-B514
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fredhutch.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319



[Rd] binary form of is() contradicts its unary form
=?UTF-8?B?SGVydsOpIFBhZ8Oocw==?=