I would recommend reading https://adv-r.hadley.nz/base-types.html and https://adv-r.hadley.nz/s3.html. Understanding the distinction between base types and S3 classes is very important to make this sort of question precise, and in my experience, you'll find R easier to understand if you carefully distinguish between them. (And hence you shouldn't expect is.x(), inherits(, "x") and is(, "x") to always return the same results)
Also note that many of is.*() functions are not testing for types or classes, but instead often have more complex semantics. For example, is.vector() tests for objects with an underlying base vector type that have no attributes (apart from names). is.numeric() tests for objects with base type integer or double, and that have the same algebraic properties as numbers. Hadley On Mon, Mar 25, 2019 at 10:28 PM Abs Spurdle <spurdl...@gmail.com> wrote: > > > I have noticed a discrepancy between is.list() and is(x, “list”) > > There's a similar problem with inherits(). > > On R 3.5.3: > > > f = function () 1 > > class (f) = "f" > > > is.function (f) > [1] TRUE > > inherits (f, "function") > [1] FALSE > > I didn't check what happens with: > > class (f) = c ("f", "function") > > However, they should have the same result, regardless. > > > Is this discrepancy intentional? > > I hope not. > > [[alternative HTML version deleted]] > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel -- http://hadley.nz ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel