任何理由更喜欢is.character而不是class(object)==" character"?

时间:2016-03-14 17:15:30

标签: r

我对R有一个非常简单的问题, 是否有理由让我更喜欢使用

 is.character(object) 

 class(object) == "character" 

在R。

或其他is.class函数。

1 个答案:

答案 0 :(得分:7)

除了显而易见的可读性和性能参数之外,您几乎永远不会通过class(foo) == "class"测试对象的类,因为您无法依赖它来提供正确的结果。

正如nrussell评论的那样,S3类系统通过标记具有多个类名的对象来支持“继承”。只要存在多个类名,这种相等性检查就会产生废话。

相反,请使用:

if (inherits(obj, 'class'))
    … action …

或者,如果您明确要执行精确测试,而不是继承测试(应该非常罕见):

if (identical(class(obj), 'class'))
    … action …