9

如果给定一个对象x,有没有办法分类它是S3S4(或“其他”)?我看过is.object()and isS4(),并且可以确定某物是一个对象(或不是),它是一个 S4 对象(或不是)。但是,在我看来,S3 对象并不是所有不是 S4 对象的对象的补充。

因此,如何以编程方式完成这些任务?

这是一个让我烦恼的例子,取自以下帮助is.object()

a = as.factor(1:3)
is.object(a)  # TRUE
isS4(a) # FALSE

这是否意味着这a是一个S3对象?

4

1 回答 1

10

如果它是一个对象并且不是 S4,那么它就是一个 S3:

is.object(foo) & !isS4(foo)

is.object检查当事物具有类属性时设置的一些魔术 OBJECT 位,因此它本质上是一种快速的操作方式any(names(attributes(foo))=="class"),它定义了 S3 对象。

于 2011-08-05T17:02:42.627 回答