Hi Herve, Interesting observation with `setClass` but it is for S4. It looks like `data.frame()` is not an S4 class.
> isS4(data.frame()) [1] FALSE And in your case this might help: > is(asS4(data.frame()), "list") [1] TRUE Looks like `is` is designed for S4 classes, I am not entirely sure. Best, -Mehmet On 29 November 2017 at 20:46, Hervé Pagès <hpa...@fredhutch.org> wrote: > 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" <hpa...@fredhutch.org >> <mailto:hpa...@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: hpa...@fredhutch.org <mailto:hpa...@fredhutch.org> >> Phone: (206) 667-5791 >> Fax: (206) 667-1319 >> >> ______________________________________________ >> R-devel@r-project.org <mailto:R-devel@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: hpa...@fredhutch.org > Phone: (206) 667-5791 > Fax: (206) 667-1319 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel