Hello,
Here is another example.
df1 <- data.frame(a = 1:3, b = 4:6)
inherits(df1, "data.frame")
#[1] TRUE
class(df1)
#[1] "data.frame"
inherits(df1, "list")
#[1] FALSE
This is documented behavior, the help page ?inherits says
The function class prints the vector of names of classes an object
inherits from.
So far, so good. But now comes the part I don't like.
is.list(df1)
#[1] TRUE
Strictly speaking this is not unexpected behavior (because it's
documented) but isn't it *inconsistent* behavior?
Rui Barradas
Às 16:30 de 26/03/2019, Berry, Charles escreveu:
In the case of inherits (at least) this seems intended.
The help page says:
"If the object does not have a class attribute, it has an implicit class..."
which I take to mean that if an object does have a class attribute it does not
also have an implicit class.
The behavior you noted below will apply to other types bearing implicit
classes. For example:
inherits(1.0, "numeric")
[1] TRUE
inherits(structure(1.0, class="myclass"), "numeric")
[1] FALSE
I think this is reasonable behavior. Consider the "Date" class, which stores values as
"numeric":
class(Sys.Date())
[1] "Date"
inherits(Sys.Date(),"numeric")
[1] FALSE
class(unclass(Sys.Date()))
[1] "numeric"
Sys.Date()%%2
Error in Ops.Date(Sys.Date(), 2) : %% not defined for "Date" objects
Letting the modulus operator (as one example) inherit the numeric class here
could create problems.
Of course for classes that should inherit the implicit type, it can be
explicitly added to the end of the class() vector by its constructor.
HTH,
Chuck
On Mar 25, 2019, at 8:27 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
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel