我对R有一个非常简单的问题, 是否有理由让我更喜欢使用
is.character(object)
比
class(object) == "character"
在R。
或其他is.class
函数。
答案 0 :(得分:7)
除了显而易见的可读性和性能参数之外,您几乎永远不会通过class(foo) == "class"
测试对象的类,因为您无法依赖它来提供正确的结果。
正如nrussell评论的那样,S3类系统通过标记具有多个类名的对象来支持“继承”。只要存在多个类名,这种相等性检查就会产生废话。
相反,请使用:
if (inherits(obj, 'class'))
… action …
或者,如果您明确要执行精确测试,而不是继承测试(应该非常罕见):
if (identical(class(obj), 'class'))
… action …