【问题标题】:Difference between `is()` and `is...()` functions`is()` 和 `is...()` 函数之间的区别
【发布时间】:2020-01-03 19:48:46
【问题描述】:

我有一个简单的问题,可能对这里的社区有所帮助。通常,在编写函数的上下文中,我想检查一个对象是否属于某个类。我有两个选择:我可以使用通用的is(object, class),也可以使用更具体的函数,例如is.list()is.data.frame()is.array()is.numeric()is.matrix() 等。

考虑我是否想测试一个对象是否是一个矩阵。 is(object, matrix)is.matrix(object) 之间有什么区别吗?是否应该在某些情况下使用一种方法,例如检查参数是否是函数内部的某个类?

A <- matrix(c(1:6), ncol = 2)
is(A, "matrix")
is.matrix(A)

#Testing whether A is a data.frame. Both should be FALSE. 
is(A, "data.frame")
is.data.frame(A)

谢谢!

【问题讨论】:

  • 我自己没有做过,但我想is 的一个优势是你可以为类传递一个字符变量。这可以减少代码。

标签: r


【解决方案1】:

一些基本的is. 函数是原语,而is 不是,但我认为它们不会产生不同的结果。据我所知,不同之处在于并非每个类都有为它编写的is. 函数。如果您使用自己的类,is() 可以使用它们:

x = 1:3
is(x, 'numeric')
class(x) = 'wouldntyouliketoknow'
is(x, 'numeric')
is(x, 'wouldntyouliketoknow')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 2021-07-29
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多