如果给定了对象x
,是否有办法对其是S3
还是S4
(或“其他”)进行分类?我查看了is.object()
和isS4()
,并且可以识别出某个对象(或不是对象)并且它是一个S4对象(或不是)。但是,在我看来,S3对象并不是所有不是S4对象的对象的补充。
因此,如何以编程方式完成这些作业?
这是一个让我感到困惑的例子,取自is.object()
的帮助:
a = as.factor(1:3)
is.object(a) # TRUE
isS4(a) # FALSE
这是否意味着a
是S3
个对象?
答案 0 :(得分:10)
如果它是一个对象而不是S4,则它是一个S3:
is.object(foo) & !isS4(foo)
is.object
检查在事物具有类属性时设置的一些魔术OBJECT位,因此它本质上是一种快速的方法any(names(attributes(foo))=="class")
,这是定义S3对象的。